Python 方法参数 * 和 **

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 % hdr
12  
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.status
18  print         reason =,resp.reason
19  print HTTP Headers:
20  for hdr in resp.getheaders():
21  print         %s : %s % hdr
22  
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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。