问题描述
a=1;b=1;c=1
def func(a=a,b=b,c=b/a):
print(a,b,c)
1 2 1.0
为什么 c
不是 b/a
,即不是 2/1=2
?
如果非默认 c
或 a
(即它们中的任何一个不等于 b
),我如何让函数在调用时重新计算 1
通过了吗?
解决方法
如果你想在没有传递任何值时让 c 有一个默认值,在函数参数中设置 c=None 并在没有传递 c 值时在函数内部设置默认值
a=1;b=1;c=1
def func(a=a,b=b,c=None):
c = c if c is not None else b/a
print(a,b,c)
Note: earlier solution fail when c=0 so updated as suggested by @MisterMiyagi