聲明和調用函數:
聲明函數的方法是用def關鍵字,函數名及小括弧裡面的參數列表。
def foo(x): print x
調用函數:給出函數名和一小對括弧,並放入所需參數:
#!/usr/bin/env pythonimport httplibdef check_web_server(host,port,path): h=httplib.HTTPConnection(host,port) h.request('GET',path) resp=h.getresponse() print 'Http Response :' print ' status = ',resp.status print ' resson = ',resp.reason print 'Http Headers:' for hdr in resp.getheaders(): print ' %s: %s ' % hdr’執行結果:check_web_server(‘www.python.org’,80,’/’)Http Response : status = 200 resson = OKHttp Headers: content-length: 417 x-powered-by: PHP/5.3.3-7+squeeze14 server: Apache connection: close date: Tue, 19 Feb 2013 02:39:16 GMT content-type: text/html; charset=UTF-8
關鍵字參數:
可以省去固定順序的需要,關鍵字參數通過“鍵=值”的形式指定,例如:
check_web_server(port=80,path='/',host='www.pyton.org')
預設參數:
對參數提供預設值,那可以不必向其傳遞變數值,比如:
def check_web_server(host,port=80,path=’/’)
注意:預設參數和關鍵字參數區別:
關鍵字參數只能用於“函數調用”,預設參數用於“函式宣告”;對於預設函數,所有必須提供的參數一定要出現在任何選擇性參數之前,不能混在一起活著顛倒順序。
def check_web_server(host,port=80,path) 這個是錯誤的
常見錯誤:
1、將列表和字典作為預設參數;
由於列表和字典都是可變變數,這樣的話看哪呢過會很危險,特別是當他們連續的穿過多個函數調用時,
def func(arg=[]): arg.append(1) print arg func() [1] func() [1,1] func() [1,1,1]
函數在對象中的引用:
在Python 裡你可以把函數(或方法)當做和其他對象一樣使用,可以放在容器裡,賦值給其他變數,做為參數傳遞給函數等。
當調用函數的時候才會加上小括弧,把它當做變數或者對象傳送時,只需要函數名字就可以啦
匿名函數:
建立的方法是使用lambda關鍵字,它由一個運算式組成,
文法:lambda args:運算式 執行的時候 lambda 會返回一個可立即使用的函數對象,可以將其儲存為一個變數,或者一個回呼函數以便稍後執行.
*args 和 **kwargs
無論是函數調用韓式聲明,單個星號表示 有元祖或者列表作為參數,兩個星號則代表參數為字典。
函數調用裡的 * 和**
def check_web_server(host,port,path):