当我尝试以下操作时出现错误
def test_func(key1=2.7, key2=key1*3.5):
print(key1, key2)
NameError: name 'key1' is not defined
我的解决方案就像是
def test_func(key1=2.7, key2=None):
if not key2:
key2 = key1*3.5
print(key1, key2)
但这看起来有点难看。有人有更好的解决方案吗?
修改
所以我的最终解决方案是
def test_func(key1=2.7, key2=None):
if key2 is not None:
key2 = key1*3.5
print(key1, key2)
感谢所有答案
答案 0 :(得分:5)
不,没有更好的解决方案。
函数参数定义可以是表达式,但它们仅在一次时进行评估(有时会让人感到惊讶,请参阅"Least Astonishment" and the Mutable Default Argument)。
答案 1 :(得分:0)
我的解决方案是:
def t(key1=1, **kwargs):
key2 = kwargs.get('key2', key1*2.7)
从kwargs获取key2并使用默认key1 * 2.7
从中获取数据