Python中的*与**运算符有什么区别?

参考:大佬的链接
在学习python中遇到运用**调用dict(字典)的情况,
当时没懂dict与tuple(元组)的区别,自己测试直接调用函数或者是用*调用都不可实现,
于是查了许多大佬的解释,
得出下面关于***的区别。

1.算法运算

*表示乘号
**表示乘方

a=2*3        
print(a)     

run:	6
a=2**3
print(a)

run:	8

2. *arg*kwargs 主要用于函数定义。

其中的两个关键字。其实并不是必须写成 *arg*kwargs* 才是必须的. 你也可以写成*a*k
而写成 *arg*kwargs 只是一种通俗命名约定。

2.1函数实参

真实传给函数的参数,叫实参。
实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们必须有确定的值,以便把这些值传送给形参。

当函数的形参是固定长度时候,可以用*arg或者是**kwargs调用函数,类似对元组和字典的解引用

kwargs ={"data0":"abcd","data1":1,"data2":2}     
fun(**kwargs)                                         
def fun(data0,data1,data2):                           
    print(data0)                                      
    print(data1)                                      
    print(data2)                                      

Run:   abcd
		1
		2                                                
args =("abcd",1,2)                    
fun(*arg)                                   
def fun(data0,data1,data2):           
    print(data0)                      
    print(data1)                      
    print(data2)                      
     

Run:   abcd
		1
		2                          

2.2函数形参

形式参数是指函数名后括号中的变量。
因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

*arg*kwargs 的区别,两者都是 python 中的可变参数:

*arg 表示任何且多个无名参数,它本质是一个 tuple(元组)

*kwargs 表示关键字参数,它本质上是一个 dict(字典)

def fun(*args, **kwargs):                        
    print('args=', args)                         
    print('kwargs=', kwargs)                     
                                                 
fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')      

Run :
args= (1, 2, 3, 4)https://blog.csdn.net/yilovexing/article/details/80576788
kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

3.序列解包(python3后才有的语法糖)

其中只有用到*,没有用到** 这有些跑题了
如果想进一步学习的
可以阅读另外一篇大佬文章
Python3 序列解包

ps:蹲家一直爽,一直蹲就不爽了。希望疫情快点过吧。

发布了2 篇原创文章 · 获赞 3 · 访问量 626

猜你喜欢

转载自blog.csdn.net/weixin_43417682/article/details/104243964
今日推荐