3

是否有可能以某种方式将条件语句分配给可选参数?

我最初使用以下构造的尝试没有成功:

y = {some value} if x == {someValue} else {anotherValue}

其中 x 已预先分配。

更具体地说,我希望我的函数签名看起来像:

def x(a, b = 'a' if someModule.someFunction() else someModule.someOtherFunction()):
   :
   :

非常感谢

4

1 回答 1

8

当然,这正是你的做法。您可能要记住,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
于 2013-07-19T09:18:03.927 回答