標籤:
Python的函數定義中有兩種特殊的情況,即出現*,**的形式。
如:def myfun1(username, *keys)或def myfun2(username, **keys)等。
他們與函數有關,在函數被調用時和函式宣告時有著不同的行為。此處*號不代表C/C++的指標。
其中 * 表示的是元祖或是列表,而 ** 則表示字典
第一種方式:
1 import httplib 2 def check_web_server(host,port,path): 3 h = httplib.HTTPConnection(host,port) 4 h.request(‘GET‘,path) 5 resp = h.getresponse() 6 print ‘HTTP Response‘ 7 print ‘ status =‘,resp.status 8 print ‘ reason =‘,resp.reason 9 print ‘HTTP Headers:‘10 for hdr in resp.getheaders():11 print ‘ %s : %s‘ % hdr12 13 14 if __name__ == ‘__main__‘:15 http_info = {‘host‘:‘www.baidu.com‘,‘port‘:‘80‘,‘path‘:‘/‘}16 check_web_server(**http_info)
第二種方式:
1 def check_web_server(**http_info): 2 args_key = {‘host‘,‘port‘,‘path‘} 3 args = {} 4 #此處進行參數的遍曆 5 #在函式宣告的時候使用這種方式有個不好的地方就是 不能進行 參數預設值 6 for key in args_key: 7 if key in http_info: 8 args[key] = http_info[key] 9 else:10 args[key] = ‘‘11 12 13 h = httplib.HTTPConnection(args[‘host‘],args[‘port‘])14 h.request(‘GET‘,args[‘path‘])15 resp = h.getresponse()16 print ‘HTTP Response‘17 print ‘ status =‘,resp.status18 print ‘ reason =‘,resp.reason19 print ‘HTTP Headers:‘20 for hdr in resp.getheaders():21 print ‘ %s : %s‘ % hdr22 23 24 if __name__ == ‘__main__‘:25 check_web_server(host= ‘www.baidu.com‘ ,port = ‘80‘,path = ‘/‘)26 http_info = {‘host‘:‘www.baidu.com‘,‘port‘:‘80‘,‘path‘:‘/‘}27 check_web_server(**http_info)
轉載來自:http://my.oschina.net/u/1024349/blog/120298
【轉載】 Python 方法參數 * 和 **