13、函數
阿新 • • 發佈:2018-01-02
python函數 else語句 else 重用 第三方 區分 快速 return 表達式
函數
函數就是完成特定功能的一個語句組,這組語句可以作為一個單位使用,並且給它取一個名字。
可以通過函數名在程序的不同地方多次執行(這通常叫做函數調用),卻不需要在所有地方都重復編寫這些語句。
自定義函數
- 用戶自己編寫的
預定義的Python函數
- 系統自帶的一些函數,還有一些和第三方編寫的函數,如其他程序員編寫的一些函數,對於這些現成的函數用戶可以直接拿來使用。
為什麽使用函數
- 降低編程的難度
- 通常將一個復雜的大問題分解成一系列更簡單的小問題,然後將小問題繼續劃分成更小的問題,當問題細化為足夠簡單時,我們將可以分而治之。這時,我們可以使用函數來處理特定的問題,各個小問題解決了,大問題也就迎刃而解了。
- 代碼重用
- 我們定義的函數可以在一個程序的多個位置使用,也可以用於多個程序。此外,我們還可以把函數放到一個模塊中供其他程序員使用,同時,我們也可以使用其他程序定義的函數。這就避免了重復勞動,提供了工作效率。
函數定義和調用
當我們自己定義一個函數時,通常使用def語句,其語法形式如下所示:
def 函數名 (參數列表): #可以沒有參數函數體 def add(a, b): print a + b
調用函數的一般形式是:
函數名(參數列表) add(1, 2)
形式參數和實際參數
在定義函數時函數後面圓括號中的變量名稱叫做“形式參數”,或簡稱為“形參”
在調用函數時,函數名後面圓括號中的變量名稱叫做“實際參數”,或簡稱為“實參”
缺省參數(默認參數)
默認參數只能從右至左給定,如果需要第一個參數給默認值,其他參數不給,那麽把第一個參數移到最後一個即可。
def add(a, b = 2): print a + b add(3) #result : 5
局部變量和全局變量
Python中的任何變量都有其特定的作用域。
在函數中定義的變量一般只能在該函數內部使用,這些只能在程序的特定部分使用的變量我們稱之為局部變量。
在一個文件頂部定義的變量可以供該文件中的任何函數調用,這些可以為整個程序所使用的變量稱為全局變量。
x = 100 #全局變量,可以在文件任何地方調用 def func(): x = 200 #局部變量,只能在函數內部調用 print x func() #輸出200 print x #輸出100
global語句
強制聲明為全局變量
x = 100 def func(): global x #強制聲明x為全局變量,導致值被覆蓋 x = 200 func() print x #輸出200
函數返回值
函數被調用後會返回一個指定的值
函數調用後默認返回None
return返回值
返回值可以是任意類型
return執行後,函數終止
區分返回值和打印
def add(a, b): return a + b ret = add(1, 2) #將函數返回結果賦值給變量ret print ret #輸出3
向函數傳入元組和字典
func (*args)
def func(x, y): print x, y t = (1, 2) func(*t)
func (**kw)
def func(name='jack', age=30): print name,age d = {'age': 22, 'name' : 'mike'}; func(**d)
處理多余實參
def func(*args, **kw)
def func(x, *args, **kw): print x print args print kw func(1, 2, 3, 4, 5, y=10, z=20) #輸出 1 (2, 3, 4, 5) {'y': 10, 'z': 20}
lambda表達式
- 匿名函數
lambda函數是一種快速定義單行的最小函數,是從Lisp借用來的,可以用在任何需要函數的地方。
lambda x,y:x*y
- 使用Python寫一些執行腳本時,使用lambda可以省去定義函數的過程,讓代碼更加精簡。
- 對於一些抽象的,不會別的地方再復用的函數,有時候給函數起個名字也是個難題,使用lambda不需要考慮命名的問題。
使用lambda在某些時候讓代碼更容易理解。
lambda基礎
lambda語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的返回值。lambda語句構建的其實是一個函數對象
g = lambda x:x**2 print g <function <lambda> at 0x0000000002643A58>
lambda應用實例
reduce為逐次操作list裏的每項,接收的參數為2個,最後返回的為一個結果。
sum = reduce(lambda x,y:x*y, range(1,6)) print sum
switch語句
- switch語句用於編寫多分支結構的程序,類似與if...elif...else語句。
- switch語句表達的分支結構比if...elif...else語句表達的更清晰,代碼的可讀性更高。
- 但是python並沒有提供switch語句
switch實現
- python可以通過字典實現switch語句的功能。
- 實現方法分為兩步
- 首先,定義一個字典
- 其次,調用字典的get()獲取相應的表達式
函數調用
通過字典調用函數
def add(a, b): return a + b def sub(a, b): return a - b def mul(a, b): return a * b def div(a, b): return a / b operator = {'+': add, '-': sub, '*': mul, '/': div} #通過字典實現switch語句的功能 def calc(a, o, b): return operator.get(o)(a, b) print calc(4, '+', 2) print calc(4, '-', 2) print calc(4, '*', 2) print calc(4, '/', 2)
13、函數