Python函数定义与函数调用中的单星号(*)与双星号(**)
1.函数定义中的单星号(*)与双星号(**),作用是收集参数。
单星号(*)——收集位置参数到元组中;双星号(**)——收集关键字参数到字典中。
2.函数调用中的单星号(*)与双星号(**),作用是分配参数。
单星号(*)——分配元组/列表给位置参数;双星号(**)——分配字典给关键字参数。
3.说明:只有在定义函数(允许可变数量的参数)或调用函数时(拆分字典或序列)使用,星号才能发挥作用。
# %% def with_stars(**kwargs): print(kwargs['name'], 'is', kwargs['age'], 'years old。') def without_stars(kwargs): print(kwargs['name'], 'is', kwargs['age'], 'years old。') def without_stars2(name='唐僧', age=100): print(f'{name} is {age} years old。') args = {'name': '孙悟空', 'age': 500} with_stars(**args) # 定义和调用函数时,都使用了** without_stars(args) # 定义和调用函数时,都未使用** without_stars2(**args) # 定义函数时未使用**,调用函数时使用了** # 如果在定义和调用时都使用*或**,将只传递元组或字典。因此还不如不使用它们,还可省却些麻烦。
# %%