python参数的可变参数与关键词参数

Posted 多一点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python参数的可变参数与关键词参数相关的知识,希望对你有一定的参考价值。

# 可变参数与关键词参数


def can_form_triangle(a, b, c):
print(f‘a = {a}, b = {b}, c = {c}‘)
return a + b > c and b + c > a and a + c > b


‘‘‘
1. 在没有特殊处理的情况下,函数的参数都是位置参数,也就是意味着传入的参数必须对号入座,
传入的参数值1,2,3会依次赋值给a,b,c
2. 可以使用*args来接收任意数量的参数,但是*args不能接收带参数名的参数,
‘‘‘
# 调用函数传入参数不指定参数名按位置对号入座
print(can_form_triangle(1, 2, 3))
# 调用函数通过“参数名=参数值”的形式按顺序传入参数
print(can_form_triangle(a=1, b=2, c=3))
# 调用函数通过“参数名=参数值”的形式不按顺序传入参数
print(can_form_triangle(c=3, a=1, b=2))


def calc(*args):
result = 0
for arg in args:
result += arg
return result


‘‘‘
这样的calc函数只能接收不带参数名的传参,
如果参数中带有参数名,则会出现typeerror

例如不能接收这样的传参

print(calc(a=1,b=2,c=3))


如果避免此类问题,一般情况下,是将
改写成下面的形式
‘‘‘


def calc(*args: any, **kwargs: any) -> int:
result = 0
for arg in args:
result += arg
for value in kwargs.values():
result += value

return result


print(calc()) # 0
print(calc(1, 2, 3)) # 6
print(calc(a=1, b=2, c=3)) # 6
print(calc(1, 2, c=3, d=4)) # 10
# #不带参数名的参数(位置参数)必须出现在带参数名的参数(关键字参数)之前,否则会出现一场报错
























































以上是关于python参数的可变参数与关键词参数的主要内容,如果未能解决你的问题,请参考以下文章

python 关键字参数和可变参数*args,和**kw

Python-可变参数和关键字参数(*args **kw)

Python的位置参数、默认参数、关键字参数、可变参数区别

python详解python函数定义 def()与参数args可变参数*args关键参数**args使用实例

[python][oldboy]关键字参数和位置参数,默认参数,可变长参数(无名,有名)

python可变长参数(非关键字及关键字参数)