python 为何要设计这种?

正确:

def f(a=2,b=2,c=3):
    return a+b+c
print(f(*(1,1),c=1))

 

错误:

def f(a=2,b=2,c=3):
    return a+b+c
print(f(*(1,1),1))

会被提示:

Python 函数参数*expression 之后为什么只能跟关键字参数

 

而这个会被提示:

def f(a=2,b=2,c=3):
    return a+b+c
print(f(a=1,*(1,1)))

 

>>> 
Traceback (most recent call last):
  File "C:\Users\un_ieval.py", line 91, in <module>
    print(f(a=1,*(1,1)))
TypeError: f() got multiple values for argument 'a'

 

改变a的参数类别才恢复正常:

def f(a,b=2,c=3):
    return a+b+c
print(f(1,*(1,1)))

def f(a,b,c):
    return a+b+c
print(f(1,*(1,1)))

 

可见,为了能够最大限度运用*expression,尽量不要使用默认参数.

相关文章:

  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
  • 2021-12-28
  • 2021-10-01
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
猜你喜欢
  • 2021-09-23
  • 2021-11-27
  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
  • 2021-10-13
  • 2022-12-23
相关资源
相似解决方案