python基础之参数*args,**kwargs
python基础之参数*args,**kwargs
python中的参数是如何传递的?
# 将未拆包的数据进行传参
def run(a,*args):
#第一个参数传给了a
print(a)
# args是一个元组,里面是2和3两个参数
print(args)
# *args是将这个元组中的元素依次取出来
print("对args拆包:",*args)# *args 相当于 a,b = args
run(1,2,3)
得到的结果是:
1
(2, 3)
对args拆包: 2 3
也就是说其实args就是一个tuple,传入的参数都会被当成tuple
还有一个其他用法
def func(*args,**kwargs):
print(type(args),args,type(kwargs),kwargs)
def func2(a,b,c,d):
print(a,b,c,d)
if 0 :
func()
print("得到的结果是<class 'tuple'> () <class 'dict'> {}")
'''在python中,*arg与**kwargs用于函数定义时,均为可变参数,*arg表示任意多个无名参数,
类型为tuple;**kwargs表示关键字参数,为dict。'''
#用法一 用于函数定义
if __name__ == "__main__":
func(1,2,3,4,5,a=1,b=2,c=3)
'''<class 'tuple'> (1, 2, 3, 4, 5) <class 'dict'> {'a': 1, 'b': 2, 'c': 3}'''
'''使用时需将*arg放在**kwargs之前,否则会有“SyntaxError: non-keyword arg after keyword arg”的语法错误。'''
#用法二 用于函数调用
text1 = (1,2,3,4)
text2 = [1,2,3,4]
text3 = {1,2,3,4}
text4 = {'a':1,'b':2,'c':3,'d':4}
func2(*text1),func2(*text2),func2(*text3),func2(**text4)
'''
*会以单个元素的形式解包序列(如元组、列表、集合),使其成为独立的参数。
**会以键值对的形式解包字典,使其成为独立的关键字参数。
'''
posted on 2021-12-09 20:03 YangShusen' 阅读(194) 评论(0) 收藏 举报
浙公网安备 33010602011771号