函數
在Python中,定義一個函數要使用 def 語句,依次寫出函數名、括號、括號中的參數和冒號:,然後,在縮進塊中編寫函數體,函數的返回值用 return 語句返回。
如果沒有return語句,函數執行完畢後也會返回結果,只是結果爲 None。
return None可以簡寫爲return。
def square_of_sum(L):
sum = 0
for item in L:
sum += item ** 2
return sum
多返回值函數
在語法上,返回一個tuple可以省略括號,而多個變量可以同時接收一個tuple,按位置賦給對應的值,所以,Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。
import math
def quadratic_equation(a, b, c):
ra = (-b + math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
rb = (-b - math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
return ra,rb
默認參數
函數的默認參數的作用是簡化調用,你只需要把必須的參數傳進去。但是在需要的時候,又可以傳入額外的參數來覆蓋默認參數值。
由於函數的參數按從左到右的順序匹配,所以默認參數只能定義在必需參數的後面
def greet(str="world"):
print('Hello,'+str+'.')
可變參數
可變參數的名字前面有個 * 號,我們可以傳入0個、1個或多個參數給可變參數
Python解釋器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變量 args 看成一個 tuple 就好了。
def average(*args):
if len(args) == 0:
return 0.0
sum = 0.0
for item in args:
sum += item
return sum / len(args)
列表生成式
把要生成的元素 x * x 放到前面,後面跟 for 循環,就可以把list創建出來
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print([x * (x+1) for x in range(1,100,2)])
條件過濾
只有 if 判斷爲 True 的時候,才把循環的當前元素添加到列表中。
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
def toUppers(L):
return [s.upper() for s in L if isinstance(s,str)]
多層表達式
for循環可以嵌套,因此,在列表生成式中,也可以用多層 for 循環來生成列表。
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
翻譯爲循環
L = []
for m in 'ABC':
for n in '123':
L.append(m + n)
print [a * 100 + b * 10 + c for a in range(1,10) for b in range(10) for c in range(10) if a == c]
輸出:[101, 111, 121, 131, 141, 151, 161, 171, 181,….