持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
0 环境
- 编辑器:idea或vscode
- 系统版本:windows10
- python版本:3.9.6
1 位置参数解构
日常我们使用的方式:函数名(普通变量, 关键字)或者也可以是关键字这类的混合方式,但调用函数,传入列表值,还想保持函数名(参数1,参数2)不变,比较粗暴的方式,函数名(列表值[索引]..),但不够优雅,还好有优雅的解决方式。
初始化列表,变量名解构,函数名传入列表,并且在列表前加入星号,这样子可迭代对象就被解构成为位置参数的,是不是很有意思,参数可以参数名,收集值,不要和解构混肴了。
def positional_parameter_structure(a, b):
result = a + b
print(result)
return result
if __name__ == '__main__':
tuple_values = [3,4]
positional_parameter_structure(*tuple_values)
元组也是可以的。
可变参数发生在函数定义的时候,而参数解构则发生在函数调用的那刻。也就是说星号,在调用时,是解构,在定义时,是可变。
2 关键字参数解构
有位置参数解构,就会有关键字参数解构。关键字参数解构,加两个星号,可把字典解构成关键字参数。
3 可变参数和解构混用
位置可变参数和解构
def add(*args):
sum = 0
for arg in args:
sum += arg
print(sum)
return sum
if __name__ == '__main__':
values = [3, 4, 4, 5, 6]
add(*values)
关键字解构和关键字可变参数混用
4 总结
我也试过,列表,字典啥的可以直接传进去,不需要星号的那种,用着也没问题。在仔细理清楚解构和可变,确实很有用,比如add(a, b),a和b相加,突然前端说传入数组过来(多选上用到的多,前端也不想解构在传给后端),如果没有解构,是不是要动函数定义,其他地方调用函数的也要改,解构的出现不需要动用定义函数那部分,你好我好大家好。