聲明和調用函數:
聲明函數的方法是用def關鍵字,函數名及小括号裡面的參數清單。
調用函數:給出函數名和一小對括号,并放入所需參數:
關鍵字參數:
可以省去固定順序的需要,關鍵字參數通過 “鍵=值”的形式指定,例如:
預設參數:
對參數提供預設值,那可以不必向其傳遞變量值,
比如:
注意:預設參數和關鍵字參數差別:
關鍵字參數隻能用于“函數調用”,預設參數用于“函數聲明”;對于預設函數,<b>所有必須提供的參數一定要出現在任何可選參數之前</b>,不能混在一起活着颠倒順序。
常見錯誤:
1、 将清單和字典作為預設參數;
由于清單和字典 都是可變變量,這樣的話看哪呢過會很危險,特别是當他們連續的穿過多個函數調用時,
def func(arg=[]):
arg.append(1)
print arg
func()
[1]
[1,1]
[1,1,1]
函數在對象中的引用:
在Python 裡你可以把函數(或方法)當做和其他對象一樣使用,可以放在容器裡,指派給其他變量,做為參數傳遞給函數等。
當調用函數的時候才會加上小括号,把它當做變量或者對象傳送時,隻需要函數名字就可以啦
匿名函數:
建立的方法是使用lambda關鍵字,它由一個表達式組成,
文法:lambda args:表達式 執行的時候 lambda 會傳回一個可立即使用的函數對象,可以将其儲存為一個變量,或者一個回調函數以便稍後執行.
*args 和 **kwargs
無論是函數調用韓式聲明,單個星号表示 有元祖或者清單作為參數,兩個星号則代表參數為字典。
函數調用裡的 * 和**
将參數資訊放到元祖裡面:
調用時:
簡潔點的寫法:
如果:
是以函數調用就變成了:
聲明函數中的 * 和 **
這個可以讓python支援變長參數:
不管傳遞多少參數,都可以處理,all_sales是一個包含所有元素的元祖,
注意:在函數裡定義變長函數時,所有必須出現的參數一定先出現,然後是預設值,最後是變長參數;
使用雙星号的方式:
這樣将至少接受初始三個參數
本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1135482,如需轉載請自行聯系原作者