首页 > 代码库 > 我爱Python之*arges和**kwarges区别

我爱Python之*arges和**kwarges区别

1、函数调用里的*和**:
*:元组或列表“出现”
**:字典“出没”
>>> def check_web_server(host, post, path):
             ...
 
host_info = (‘www.python.org‘, 80, ‘/‘)
调用时:check_web_server(host_info[0], host_info[1], host_info[2])  这种写法既不可扩写(一打参数)也不好看
用*号时:check_web_server(*host_info)  干净优雅
 
当host_info = {host=‘www.python.org‘, post=80, path=‘/‘}
用**:check_web_server(**host_info)   按键名称进行匹配
 
2、函数定义里的*和**:
使得Python支持变长参数,函数可接收任何数量的参数
>>> def daily_sales_total(*all_sales):
             total = 0.0
             for each_sale in all seles:
                   total += float(each_sale)
             return total
 
>>> daily_sales_total()
>>> daily_sales_total(0.0)
>>> daily_sales_total(1.0, 2.0, 3.0)
 
>>> def check_web_server(host, post, path, *args, **kwargs): # 这个函数必须接受至少三个初始参数,也能接受随后任何数目的参数或是关键字参数

我爱Python之*arges和**kwarges区别