描述
很多复杂函数在调用时会用到*tuple和**dict,现在记录一下,请看下面代码:
# 参数列表中的arg代表一个参数,这个参数可以是整数,浮点数或者是字符串
# 参数列表中的*args代表一个元组参数,适用于在定义函数的时候,并不确定参数究竟需要几个的场景
def func1(arg, *args):
print("arg:", arg)
print("args:", args)
for value in args:
print("other args:", value)
# 参数列表中的**args代表一个字典参数,字典中都有确定的键值对
def func2(**args):
print("args:", args)
for key in args.keys():
print("key:%s value:%s" % (key, args.get(key)))
def func3(arg, *tuple, **dict):
print("arg=%s" % (arg))
print("tuple:", tuple)
print("dict:", dict)
for value in tuple:
print("value is %s" % (value))
for key in dict.keys():
print("key:%s value:%s" % (key, dict.get(key)))
if __name__ == "__main__":
print("----------func1----------")
# 针对func1(arg,*args),第一个实参会传给arg形参,后面的实参'a',True,False,'Hello'会以元组的形式传给*args形参
func1(1, 'a', True, False, 'Hello')
print("\n\n----------func2----------")
# 针对func2(**args),会把a='Apple',b='Banana',c='Cheery'转化为一个字典传给**args形参
func2(a='Apple', b='Banana', c='Cheery')
print("\n\n----------func3----------")
# func3(arg,*tuple,**dict)第一个实参1会传给arg形参,2,3,4,5会以元组的形式传给*tuple形参,a=1,b=2,c=3会以字典的形式传给形参**dict
func3(1, 2, 3, 4, 5, a=1, b=2, c=3)
输出结果:
----------func1----------
arg: 1
args: ('a', True, False, 'Hello')
other args: a
other args: True
other args: False
other args: Hello
----------func2----------
args: {'a': 'Apple', 'b': 'Banana', 'c': 'Cheery'}
key:a value:Apple
key:b value:Banana
key:c value:Cheery
----------func3----------
arg=1
tuple: (2, 3, 4, 5)
dict: {'a': 1, 'b': 2, 'c': 3}
value is 2
value is 3
value is 4
value is 5
key:a value:1
key:b value:2
key:c value:3
其实简单理解就是把多个参数打包为一个整体传给函数!
博主技术交流Q群:1151493105