鱼C论坛

 找回密码
 立即注册
查看: 2513|回复: 0

[技术交流] about starred expression

[复制链接]
发表于 2020-12-18 18:17:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
>>>


**********************如有错误,欢迎大家指正。**********************************
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表