*args和**kwargs用法
'''
@Date: 2019-10-10 21:14:56
@LastEditors: 冯浩
@LastEditTime: 2019-10-20 22:38:16
'''
def func(*args):
# just use "*" to collect all remaining arguments into a tuple
# 这里的*是关键符号,args可以替换为其他命名
# 更一般的函数定义方式是def fun(*args,**kwargs),
# 可以在许多Python源码中发现这种定义,
# 其中*args表示任何多个无名参数,它本质是一个元组tuple;
# **kwargs表示关键字参数,它本质上是一个字典dict。
numargs = len(args)
print("参数数量: {0}".format(numargs))
for i, x in enumerate(args):
print("参数 {0} 是: {1}".format(i, x))
print()
func('a', 'b', 'c', {1: 'one', 2: 'two'})
func(('a', 'b', 'c'))
func(['1', '2', '3'])
print('-'*32)
'''
参数数量: 4
参数 0 是: a
参数 1 是: b
参数 2 是: c
参数 3 是: {1: 'one', 2: 'two'}
参数数量: 1
参数 0 是: ('a', 'b', 'c')
参数数量: 1
参数 0 是: ['1', '2', '3']
'''
def func_dict(**kwargs):
print('传入参数长度为{0}, 类型为{1}, 内容为{2}'.format(
len(kwargs), type(kwargs), kwargs)
)
for key,value in kwargs.items():
print('键: {0}, 值: {1}'.format(key,value))
# 注意这里变量不能为数字,但是字典可以.
# 如1='one'不被允许
func_dict(one='一', two='二')
'''
传入参数长度为2, 类型为<class 'dict'>, 内容为{'one': '一', 'two': '二'}
键: one, 值: 一
键: two, 值: 二
'''