函數python
函數是指可重複使用的程序片斷。它們容許你爲某個代碼塊賦予名字,容許你經過這一特殊的名字在你的程序任何地方來運行代碼塊,並可重複任何次數,這就是所謂的調用(calling)函數。咱們已經使用了不少內置的函數,例如 len 和 range。函數
案例(保存爲function1.py)spa
def say_hello(): # 該塊屬於這一函數 print('hello world') # 函數結束 say_hello() # 調用函數 say_hello() # 再次調用函數
函數參數在定義函數時給定的名稱稱做「形參」(Parameters),在調用函數時你所提供給函數的值稱做「實參」(Arguments)。code
案例(保存爲function_param.py):blog
def print_max(a, b): if a > b: print(a, 'is maximum') elif a == b: print(a, 'is equal to', b) else: print(b, 'is maximum') # 直接傳遞字面值 print_max(3, 4) x = 5 y = 7 # 以參數的形式傳遞變量 print_max(x, y)
輸出:作用域
$ python function_param.py 4 is maximum 7 is maximum
局部變量it
當你在一個函數的定義中聲明變量時,它們不會以任何方式與身處函數以外但具備相同名稱的變量產生關係,也就是說,這些局部變量只存在於函數這一局部(local),這些被稱爲變量的做用域。變量的做用域是它們被定義的塊,從定義它們的名字的定義點開始。
io
案例(保存爲 function_local.py):function
x = 50 def func(x): print('x is', x) x = 2 print('Changed local x to', x) func(x) print('x is still', x)
輸出:class
$ python function_local.py x is 50 Changed local x to 2 x is still 50
global語句
若是你想要給一個程序頂層的變量賦值,那麼你必須告訴python這一變量並不是局部的,並且全局的(global)。
案例 (保存爲 function_global.py):
x = 50 def func(): global x print('x is', x) x = 2 print('Changed global x to', x) func() print('Value of x is', x)
結果爲:
$ python function_global.py x is 50 Changed global x to 2 Value of x is 2
默認參數值
對於一些函數來講,你可能但願使一些參數可選並使用默認的值,以免用戶不需爲他們提供值得狀況。默認參數值能夠有效解決這一狀況,你能夠 經過在函數定義時附加一個賦值運算符(=)來爲參數指定默認參數值。要注意,默認參數值應該是常數。更確切的說,默認參數值應該是不可變的。
案例(保存爲 function_default.py):
def say(message, times=1): print(message * times) say('Hello') say('World', 5)
輸出:
$ python function_default.py
Hello
WorldWorldWorldWorldWorld
關鍵字參數
若是你有一些具備不少參數的函數,而你又但願只對其中的一些進行指定,那麼你能夠經過命名它們來給這些參數賦值--這就是關鍵字參數。
案例(保存爲function_keyword.py):
def func(a, b=5, c=10): print('a is', a, 'and b is', b, 'and c is', c) func(3, 7) func(25, c=24) func(c=50, a=100)
輸出:
$ python function_keyword.py a is 3 and b is 7 and c is 10 a is 25 and b is 5 and c is 24 a is 100 and b is 5 and c is 50
可變參數
有事你可能想定義的函數裏面可以有任意數量的變量,也就是參數數量是可變的,這能夠經過使用星號來實現(案例保存爲 function_varargs.py):
def total(a=5, *numbers, **phonebook): print('a', a) #遍歷元組中的全部項目 for single_item in numbers: print('single_item', single_item) #遍歷字典中的全部項目 for first_part, second_part in phonebook.items(): print(first_part,second_part) print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
輸出:
$ python function_varargs.py a 10 single_item 1 single_item 2 single_item 3 Inge 1560 John 2231 Jack 1123 None
有點難理解,慢慢品呵呵
return語句
return語句能夠用於從函數中返回,也就是中斷函數。咱們也能夠選擇在中斷函數時從函數中返回一個值。
案例(保存爲 function_return.py):
def maximum(x, y): if x > y: return x elif x == y: return 'The numbers are equal' else: return y print(maximum(2, 3))
輸出:
$ python function_return.py 3
要注意到若是return語句沒有搭配任何一個值則表明着返回None。None在Python中是一個特殊的類型,表明着虛無。