Python函数可选参数 - 可以添加为条件?

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)

非常感谢

Ble*_*der 8

当然,这正是你如何做到的.您可能需要记住,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)