|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近在学习 *和**表达式,有几点总结如下:
1,这首先是一个表达式,表达式,表达式。
2,表达式在函数定义和函数调用的时候,作用刚好相反。
* : 元组 <---> 参数表达式
*出现在函数定义时,将未来传入的函数保存为一个元组
*出现在函数调用时,将一个可迭代的数据转换为参数
**: 字典 <---> 关键字参数表达式
**出现在函数定义时,将未来传入的关键字参数表达式转换保存为一个字典
**出现在函数调用时,将一个字典转换为关键字表达式
3,举例:
>>> def f1(*args):
print(args)
>>> f1(1,2,3)
(1, 2, 3)
>>> f1([1,2])
([1, 2],)
>>>
>>>
>>> a = [1,2,3,4]
>>> f1(*a) #此处的*a 表达式等同于:1,2,3,4
(1, 2, 3, 4) # 1,2,3,4 被函数定义中的*转换为元组
>>> def f2(**kwargs):
for key,value in kwargs.items():
print('%s : %s ' % (key,value))
>>> f2(a =1,b=2,c=3)
a : 1
b : 2
c : 3
>>> dict1 ={'a':1,'b':2,'c':3}
>>> f2(**dict1) # 此处的**dict1 表达式等同于: a=1,b=2,c=3,由于函数定义中有**kwargs,所以传入的 a=1,b=2,c=3又被转换为一个名字叫做kwargs的字典了
a : 1
b : 2
c : 3
>>>
**********************如有错误,欢迎大家指正。**********************************
|
|