是否有可能以某种方式将条件语句分配给可选参数?
我最初使用以下构造的尝试没有成功:
y = {some value} if x == {someValue} else {anotherValue}
其中 x 已预先分配。
更具体地说,我希望我的函数签名看起来像:
def x(a, b = 'a' if someModule.someFunction() else someModule.someOtherFunction()):
:
:
非常感谢
是否有可能以某种方式将条件语句分配给可选参数?
我最初使用以下构造的尝试没有成功:
y = {some value} if x == {someValue} else {anotherValue}
其中 x 已预先分配。
更具体地说,我希望我的函数签名看起来像:
def x(a, b = 'a' if someModule.someFunction() else someModule.someOtherFunction()):
:
:
非常感谢
当然,这正是你的做法。您可能要记住,b
在定义函数后会立即设置 ' 的默认值,这可能是不可取的:
def test():
print("I'm called only once")
return False
def foo(b=5 if test() else 10):
print(b)
foo()
foo()
和输出:
I'm called only once
10
10
仅仅因为这是可能的并不意味着你应该这样做。至少我不会。使用None
占位符的详细方式更容易理解:
def foo(b=None):
if b is None:
b = 5 if test() else 10
print b