siven-siven 发表于 2020-12-18 18:17:15

about starred expression

最近在学习 *和**表达式,有几点总结如下:

1,这首先是一个表达式,表达式,表达式。
2,表达式在函数定义和函数调用的时候,作用刚好相反。
      
      * :元组<--->参数表达式      
            *出现在函数定义时,将未来传入的函数保存为一个元组
            *出现在函数调用时,将一个可迭代的数据转换为参数

   **:   字典 <--->关键字参数表达式
            **出现在函数定义时,将未来传入的关键字参数表达式转换保存为一个字典
               **出现在函数调用时,将一个字典转换为关键字表达式


3,举例:
>>> def f1(*args):
        print(args)

>>> f1(1,2,3)
(1, 2, 3)
>>> f1()
(,)
>>>
>>>
>>> a =
>>> 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
>>>


**********************如有错误,欢迎大家指正。**********************************
页: [1]
查看完整版本: about starred expression