目录
一、 *args和**kwargs的区别
1.1 区别
1.2 代码示例
1.3 运行结果?
二、*args和**kwargs在函数参数传递的应用
2.1 代码示例
2.2 运行结果
三、参考资料
四、心得体会
一、 *args和**kwargs的区别
1.1 区别
*args和**kwargs是一种约定俗成的命名方式,为了方便大家进行辨认和学习,实际上也可以自己命名如:*var,**kwvar等,最主要的区别在于*以及*的个数。
*args相当于一个列表,可以接收任意数量的非键值对参数,作为参数传递给一个函数。
**keargs相当于一个字典,可以接收不定长度的键值对,作为参数传递给一个函数。
1.2 代码示例
# 定义一个函数,定义一个参数kwargs,前面的**代表可接收任意数量的键值对。
def self_intro_kwargs(**kwargs):
for key, value in kwargs.items():
print("{0} is {1}".format(key, value), end=',')
self_intro_kwargs(My_name='Apple', my_color='red', my_size='not big', but_my_taste='delicious')
# 定义一个函数,定义一个参数args,前面的*代表可接收任意数量的非键值对。
def self_intro_args(*args):
for parameter in args:
print(parameter, end=' ')
self_intro_args('my', 'name', 'is', 'Banana,', 'my', 'color', 'is', 'yellow,', 'i\'m', 'tall',
'and also delicious')
1.3 运行结果?
二、*args和**kwargs在函数参数传递的应用
2.1 代码示例
# 定义一个参数传递函数用于测试
def test_args_kwargs(var1, var2, var3):
print("the first parameter:", var1)
print("the second parameter:", var2)
print("the third parameter:", var3)
print('')
# 两种调用方式,第一种直接输入参数,第二种使用*args或者**kwargs
# 第一种直接输入参数
test_args_kwargs(857, 996, 666)
# 第二种使用*args或者**kwargs
para = (857, 996, 666)
test_args_kwargs(*para) # 如果没有*,将会导致报错,误以为只是只传入para这个参数,导致var2,var3缺失
kwpara = {'var1': 666, 'var2': 857, 'var3': 996}
test_args_kwargs(**kwpara)
2.2 运行结果
?
三、参考资料
Python 入门指南 — Python3 中文手册 3.5.2 文档
四、心得体会
1.合适的参考文档和信息检索
2.适当的上手实践,用自己的方式重新学习,学习效果会更好
|