Pyd*_*man 3 python arguments function optional-parameters conditional-statements
不知何故,是否有可能将一个条件语句赋予可选参数?
我使用以下构造进行的初始尝试未成功:
y = {some value} if x == {someValue} else {anotherValue}
Run Code Online (Sandbox Code Playgroud)
其中x事先已分配.
更具体地说,我希望我的函数签名看起来像:
def x(a, b = 'a' if someModule.someFunction() else someModule.someOtherFunction()):
:
:
Run Code Online (Sandbox Code Playgroud)
非常感谢
当然,这正是你如何做到的.您可能需要记住,b在定义函数后会立即设置默认值,这可能是不可取的:
def test():
print("I'm called only once")
return False
def foo(b=5 if test() else 10):
print(b)
foo()
foo()
Run Code Online (Sandbox Code Playgroud)
并输出:
I'm called only once
10
10
Run Code Online (Sandbox Code Playgroud)
仅仅因为这是可能的并不意味着你应该这样做.我不会,至少.使用None占位符的冗长方式更容易理解:
def foo(b=None):
if b is None:
b = 5 if test() else 10
print b
Run Code Online (Sandbox Code Playgroud)