標籤:
1.python是一個解釋性語言:一個用編譯性語言比如C或C++寫的程式可以從源檔案(即C或C++語言)轉換到一個你的電腦使用的語言(二進位代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你運行你的程式的時候,串連/轉載器軟體把你的程式從硬碟複製到記憶體中並且運行。而Python語言寫的程式不需要編譯成二進位代碼。你可以直接從原始碼 運行 程式。在電腦內部,Python解譯器把原始碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成電腦使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯器,如何確保串連轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程式拷貝到另外一台電腦上,它就可以工作了,這也使得你的Python程式更加易於移植。2.查詢機器是否安裝python成功:python -V3.得到類的協助文檔:help(‘str‘)#得到str類的文檔help(list)#得到list類的文檔字串4.python中有4中類型的數:整數、長整數、浮點數和複數。 #(-5+4j)和(2.3-4.6j)是複數的例子。5.自然字串通過在字串全面添加首碼r或者R來指定。一定要用自然字串處理Regex例如:r"Newlines are indicated by \n"。6.字串自動級連,例如,‘What\‘s‘ ‘your name?‘會被自動轉為"What‘s your name?"。7.在多個物理行寫一個邏輯行的例子:s = ‘This is a string. This continues the string.‘print s 它的輸出:This is a string. This continues the string. 8.有一個特殊的運算子號:// 表示取整除。例如:4 // 3.0得到1.0 lambda運算子!!9.python自動為字串中間添加一個空格:print ‘Area is‘, area10.得到使用者在螢幕的輸入:raw_input(‘Enter an integer : ‘)例如:guess = int(raw_input(‘Enter an integer : ‘)) 將輸入的資料轉換為int11.在python中沒有switch語句!使用 if True: elif 條件二: else:注意最後沒有end if!!12.while 條件: 語句 else: 語句 在while可以使用else從句,有點多餘。 13.for語句: for i in range(1, 5): print i else: #也有else語句,有點多餘。 print ‘The for loop is over‘ 14.得到字串的長度:len(str) 15.在迴圈中可以使用continue語句。。 16.在函數中定義全域變數:使用global關鍵字。 def func(): global x #全域的x變數。同一個global語句指定多個全域變數。例如global x, y, z 參數中可以有預設的值,但是在形參末尾的那些參數才可以有預設參數:def func(a, b=5)是有效,但是def func(a=5, b)是 無效 的。 函數的參數調用可以使用關鍵參數,使用名字來給函數指定實參。 17.文檔字串的管理:它的首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述 例如: ‘‘‘Prints the maximum of two numbers. The two values must be integers.‘‘‘ 查看文檔字串的方法:print printMax.__doc__ #調用文檔字串的屬性!!注意雙底線!或者help(printMax) 18.使用python的標準庫:import sys 可以通過help(sys)查看模組的內容! 常用:sys.argv包含了 命令列參數 19..pyc檔案:位元組編譯的檔案 與平台無關,與python變換程式的中間態有關。 20.from .. import語句:可以from sys import argv #這樣就只引入一個sys.argv這個變數。 21.小技巧:使用模組的__name__: if __name__ == ‘__main__‘: 做一些事情。。。。 22.dir():可以列出模組裡面的定義的標識符。包括函數,類,變數等。 提供一個模組名的時候,它返回模組定義的名稱列表。如果不提供參數,它返回當前模組中定義的名稱列表。 23.del 變數 #刪除變數 24.python中有三種內建的資料結構:列表(list),元組,字典 25.元組:元組通過圓括弧中用逗號分割的項目定義。元組通常用在使語句或使用者定義的函數能夠安全地採用一組值的時候,即被使用的元組的值不會改變。 元組也是一個“序列”!(列表,字串,元組都是序列!!字典不是。。) 一個空的元組由一對空的圓括弧組成,如myempty = () 只有一個成員的元組,必須在一個元素後面再加一個逗號,這樣就“Python才能區分元組和運算式中一個帶圓括弧的對象” 元組使用的樣本: age = 22 name = ‘Swaroop‘ print ‘%s is %d years old‘ % (name, age) print ‘name is %s’%name #注意這裡只有一個變數的時候,可以這樣使用,不用括弧。 26.在python中使用漢字:在最上面寫,#coding=gbk 27.序列:主要兩個特點是索引,切片。序列的索引是負數的話,表示取倒數第幾個元素。 shoplist[1:3]:從位置1開始,包括位置2,但是停止在位置3的一個序列切片。只有兩個元素。 28.關於對象的引用的老問題,建立一個對象並給它賦一個變數的時候,這個變數僅僅“參考”那個對象,而不是對象本身!如果要拷貝序列的話,就應該使用切片操作來進行序列的拷貝。 29.輸出python中的全部漢字:for ch in xrange(0x4e00, 0x9fa6): print unichr(ch) 30.str類是字串的類。help(str) 常用方法:len(str),str.endswith(‘q‘),S.find(sub [,start [,end]]),S.index(sub [,start [,end]]),S.isdigit()#是否數字 31.對於時間的格式化函數:import time 然後就:time.strftime(‘%Y%m%d%H%M%S‘) 可以從python參考手冊得到。 32.執行一個命令,import os 然後: os.system(“命令字串”) 如果命令執行成功返回0,否則返回錯誤號碼!注意執行成功的時候返回0!! 判斷目錄是不是存在,os.path.exists(目錄名) 建立目錄:os.mkdir(新目錄名) 得到檔案分割符:os.sep 33.物件導向基本概念: 類建立一個新類型,對象是這個類的執行個體; 屬於一個對象或者類的變數被稱為域; 屬於類的函數稱為類的方法; 域有兩種類型,屬於每個執行個體/類的對象或者屬於類本身,分別被稱為執行個體變數和類變數; 類使用關鍵字class建立。 34.self:在類的方法中,必須有一個額外的第一個參數,在調用這個方法的時候不為這個參數賦值,有Python自動進行賦值,類似於java的this。這個變數一般建議命名使用self。 注意:這也意味著如果你有一個不需要參數的方法,你還是得給這個方法定義一個self參數。 35.空白語句:pass 36.類的定義: class Person: def sayHi(self): print ‘Hello, how are you?‘ p = Person() p.sayHi() 37.類裡面的初始化函數:__init__(self,參數。。。) 對應的還有一個__del__方法! 38.類的變數(由一個類的所有對象(執行個體)共用使用),對象的變數(由類的每個對象/執行個體擁有)。 39.類的繼承:class Student(SchoolMember):#括弧裡面是基類。python支援多重繼承! 40.類的儲存:使用cPickle模組進行類對象到檔案的儲存和從檔案的載入一個對象。 簡單樣本:import cPickle 儲存:f= file(檔案名稱,‘w‘); o=對象; cPickle.dump(對象,f) 取儲存:f=file(檔案名稱); o=cPickle.load(f) ; 使用對象。。。。 41.關於異常:try: s=raw_input(‘請輸入一些東西:‘) if len(s)<3: raise ShortInputException(len(s),3) #觸發自訂異常except EOFError: print ‘\n為什麼要強制結束?‘except ShortInputException,x: print ‘遇到ShortInputException異常,輸入的長度是%d,不觸發至少要輸入位元是%d‘%(x.length,x.atleast)else: print ‘沒有異常被捕獲。‘finally: print ‘無論是否異常都要執行這個語句!‘自訂異常:class ShortInputException(Exception): def __init__(self,length,atleast): Exception.__init__(self) self.length=length self.atleast=atleast 42.使代碼停留一會再執行 time.sleep(2) #要先import time 43.查看變數的類型: from types import * 再調用type(item) #返回的值是NoneType ,TypeType ,BooleanType ,IntType等等。詳細見python內建的文檔。 注意:布爾類型是True,False!首字母大寫!! 也有一個方法 if isinstance(item, int):看這個變數item是不是int類型 44.sys模組: option = sys.argv[1][2:]#比較特別的寫法!! fetch sys.argv[1] but without the first two characters 45. python中的一些特殊的方法 名稱 說明 __init__(self,...) 這個方法在建立對象恰好要被返回使用之前被調用。 __del__(self) 恰好在對象要被刪除之前調用。 __str__(self) 在我們對對象使用print語句或是使用str()的時候調用。 __lt__(self,other) 當使用 小於 運算子(<)的時候調用。類似地,對於所有的運算子(+,>等等)都有特殊的方法。 __getitem__(self,key) 使用x[key]索引操作符的時候調用。 __len__(self) 對序列對象使用內建的len()函數的時候調用。 46.列表綜合:將一個列表映射為例外一個列表的快速方法: listone = [2, 3, 4] listtwo = [2*i for i in listone if i > 2] #新的列表中將原列表大於2的元素乘以2倍 print listtwo #[6, 8] 47.函數參數使用*和**分別代表為列表或者元組。這個比較有用。def powersum(power, *args):... ‘‘‘Return the sum of each argument raised to specified power.‘‘‘... total = 0... for i in args:... total += pow(i, power)... return total執行個體: powersum(2, 3, 4) 輸出:25 48.lamdba語句:(用來建立函數的語句!!)很有特色的python語句!def make_repeater(n): return lambda s: s*ntwice = make_repeater(2)print twice(‘string‘)print twice(2)threeTimes = make_repeat(3)print threeTimes(‘string‘)print threeTimes(2) 49.動態執行python語句:exec ‘print "Hello World"‘ 注意,這裡沒有括弧!! eval用來計算儲存在python中的運算式! eval(‘3*3‘) 這也是可以的: print eval(‘"str1"+"str2"‘) 50.斷言:assert語句,用來聲明某個條件是真的。如果失敗,就引發AssertionError。 51.repr函數:用來取得對象的正常化字串表示,反引號也可以完成相同的功能。 大多數有:eval(repr(object))==object
轉自:http://renjie120.iteye.com/blog/680126
Python基礎文法