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

曾经终败给现在 2022-09-16 05:49 355阅读 0赞

可变参数与关键词参数

  1. def can_form_triangle(a, b, c):
  2. print(f'a = { a}, b = { b}, c = { c}')
  3. return a + b > c and b + c > a and a + c > b

1.在没有特殊处理的情况下,函数的参数都是位置参数,也就是意味着传入的参数必须对号入座,
传入的参数值1,2,3会依次赋值给a,b,c
2.可以使用*args来接收任意数量的参数,但是*args不能接收带参数名的参数,

调用函数传入参数不指定参数名按位置对号入座

  1. print(can_form_triangle(1, 2, 3))

调用函数通过“参数名=参数值”的形式按顺序传入参数

  1. print(can_form_triangle(a=1, b=2, c=3))

调用函数通过“参数名=参数值”的形式不按顺序传入参数

  1. print(can_form_triangle(c=3, a=1, b=2))
  2. def calc(*args):
  3. result = 0
  4. for arg in args:
  5. result += arg
  6. return result

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

例如不能接收这样的传参

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

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

  1. ''' 学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
  2. def calc(*args: any, **kwargs: any) -> int:
  3. result = 0
  4. for arg in args:
  5. result += arg
  6. for value in kwargs.values():
  7. result += value
  8. return result
  9. print(calc()) # 0
  10. print(calc(1, 2, 3)) # 6
  11. print(calc(a=1, b=2, c=3)) # 6
  12. print(calc(1, 2, c=3, d=4)) # 10

不带参数名的参数(位置参数)必须出现在带参数名的参数(关键字参数)之前,否则会出现一场报错

发表评论

表情:
评论列表 (有 0 条评论,355人围观)

还没有评论,来说两句吧...

相关阅读

    相关 可变参数

    va\_list:用来保存宏va\_start、va\_arg和va\_end所需信息的一种类型。为了访问变长参数列表中的参数,必须声明 va\_list类型的一个对象

    相关 可变参数

    到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而