開始之前先講一下python的命令行如何清屏,在idle環境下無效。打開cmd窗口,輸入python回車,鍵入 import os i=os.system('cls')就能實現清屏函數。
①if 語句,if … elif … elif … 序列用於替代其它語言中的 switch
或 case
語句。
>>> x = int(input("Please enter an integer: ")) Please enter an integer: 42 >>> if x < 0: ... x = 0 ... print('Negative changed to zero') ... elif x == 0: ... print('Zero') ... elif x == 1: ... print('Single') ... else: ... print('More')
②for 語句,Python 的 for 語句依據任意序列(鏈表或字符串)中的子項,按它們在序列中的順序來進行迭代。在迭代過程中修改迭代序列是不安全的。例如:
>>> for w in words:
print(w,len(w))
>>> a="通哥好帥哦,他是世界上最帥的男人!"
>>> for i in a:
... print(i,end='_')
...
通_哥_好_帥_哦_,_他_是_世_界_上_最_帥_的_男_人_!_>>>
cat 3
windows 7
defenestrate 12
>>> for w in words[:]: # Loop over a slice copy of the entire list. ... if len(w) > 6: ... words.insert(0, w) # insert函數 插入作用 ... >>> words ['defenestrate', 'cat', 'window', 'defenestrate']
③ range() 函數,如果你需要一個數值序列,內置函數 range() 會很方便,它生成一個等差級數鏈表,所生成的鏈表中不包括範圍中的結束值:
for i in range(5): #range 函數只能生成 整數函數 ... print(i)
0 1 2 3 4
range(5, 10) #可以選擇生成數的範圍 5 through 9 range(0, 10, 3) #可以選擇生成數的 步距 0, 3, 6, 9 range(-10, -100, -30) #可以選擇... -10, -40, -70
a作爲一個循環的數據基礎,i是循環變量,這樣寫可以循環執行print的同時,首先生成一個序列,再打印值
>>> a = ['Mary', 'had', 'a', 'little', 'lamb'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Mary 1 had 2 a 3 little 4 lamb
list函數,它從可迭代(對象)中創建列表:
>>> list(range(5)) [0, 1, 2, 3, 4]
④break和continue函數,continue 語句是從 C 中借鑑來的,它表示循環繼續執行下一次迭代:
>>> for num in range(2,10):... if num%2 ==0:
... print("Found an even number",num)
... continue
... print("Found a number",num)
...
Found an even number 2
Found a number 3
Found an even number 4
Found a number 5
Found an even number 6
Found a number 7
Found an even number 8
Found a number 9
break 語句和 C 中的類似,用於跳出最近的一級 for 或 while 循環。
>>> for n in range(2, 10): ... for x in range(2, n): ... if n % x == 0: ... print(n, 'equals', x, '*', n//x) ... break ... else: ... # loop fell through without finding a factor ... print(n, 'is a prime number') ... 2 is a prime number 3 is a prime number 4 equals 2 * 2 5 is a prime number 6 equals 2 * 3 7 is a prime number 8 equals 2 * 4 9 equals 3 * 3
⑤pass語句,什麼也不做,它用於那些語法上必須要有什麼語句,但程序什麼也不做的場合。
>>> def initlog(*args): ... pass # Remember to implement this!
⑥定義函數,三引號引起來的內容叫_函數文檔
>>> def fib(n): # write Fibonacci series up to n ... """Print a Fibonacci series up to n.""" ... a, b = 0, 1 ... while a < n: ... print(a, end=' ') ... a, b = b, a+b ... print() #用來轉移最後一行的光標到新的一行 ... >>> # Now call the function we just defined: ... fib(2000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
>>> def fib2(n): # return Fibonacci series up to n ... """Return a list containing the Fibonacci series up to n.""" ... result = [] ... a, b = 0, 1 ... while a < n: ... result.append(a) # see below ... a, b = b, a+b ... return result ... >>> f100 = fib2(100) # call it >>> f100 # write the result [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
語句result.append(b)成爲鏈表對象result的一個方法。方法是“屬於”一個對象的函數,
它被命名爲obj.methodname,這裏的obj是某個對象(可能是一個表達式),methodname是
某個在該對象類型定義中的方法的命名。
python提供了多種函數定義形式:
(1)def ask_ok(prompt, retries=4, complaint=
'Yes or no, please!'):
(2)ask_ok('Do you really want to quit?')
(3)ask_ok('OK to overwrite the file?', 2)
(4)ask_ok('OK to overwrite the file?', 2,
'Come on, only yes or no!')
可變參數列表,通常,這些可變參數是參數列表中的最後一個,因爲它們將把所有的剩餘輸入參數
傳遞給函數。
⑦ Lambda 形式,Lambda 形式可以用於任何需要的函數對象。出於語法限制,
它們只能有一個單獨的表達式。語義上講,它們只是普通函數定義中的一個語法
技巧。類似於嵌套函數定義,lambda 形式可以從外部作用域引用變量:
>>> def lamb_test(n):... return lambda x:x+n...>>> f=lamb_test(39)>>> f(1)40
>>> mm = lambda x: x ** 3
>>> mm(3)
使用print函數打印函數文檔的用法:print(mytest.__doc__)其中doc左右兩邊的 _ 字符 有兩個。
⑧函數註解,註解是以字典形式存儲在函數的 __annotations__
屬性中,對函數的其它部分沒有任何影響。參數註解(Parameter annotations)是定義在參數名稱的冒號後面,緊隨着一個用來表示註解的值得表達式。返回註釋(Return annotations)是定義在一個 ->
後面,緊隨着一個表達式,在冒號與 ->
之間。下面的示例包含一個位置參數,一個關鍵字參數,和沒有意義的返回值註釋: (沒看懂...)
>>> def f(ham: 42, eggs: int = 'spam') -> "Nothing to see here": ... print("Annotations:", f.__annotations__) ... print("Arguments:", ham, eggs) ... >>> f('wonderful') Annotations: {'eggs': <class 'int'>, 'return': 'Nothing to see here', 'ham': 42} Arguments: wonderful spam
⑨編碼風格:
使用 4 空格縮進,而非 TAB在小縮進(可以嵌套更深)和大縮進(更易讀)之間,4空格是一個很好的折中。TAB 引發了一些混亂,最好棄用
折行以確保其不會超過 79 個字符,這有助於小顯示器用戶閱讀,也可以讓大顯示器能並排顯示幾個代碼文件
使用空行分隔函數和類,以及函數中的大塊代碼
可能的話,註釋獨佔一行
使用文檔字符串
把空格放到操作符兩邊,以及逗號後面,但是括號裏側不加空格:
a = f(1, 2) + g(3, 4)
統一函數和類命名
推薦類名用
駝峯命名
, 函數和方法名用小寫_和_下劃線
。總是用self
作爲方法的第一個參數(關於類和方法的知識詳見 初識類 )不要使用花哨的編碼,如果你的代碼的目的是要在國際化環境。Python 的默認情況下,UTF-8,甚至普通的 ASCII 總是工作的最好
同樣,也不要使用非 ASCII 字符的標識符,除非是不同語種的會閱讀或者維護代碼。