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

Posted

技术标签:

【中文标题】Python函数可选参数-可以添加为条件吗?【英文标题】:Python function optional arguments - possible to add as condition? 【发布时间】:2013-07-18 12:11:51 【问题描述】:

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

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

y = some value if x == someValue else anotherValue

x 预先分配的位置。

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

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

非常感谢

【问题讨论】:

【参考方案1】:

当然,您就是这样做的。您可能要记住,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

【讨论】:

以上是关于Python函数可选参数-可以添加为条件吗?的主要内容,如果未能解决你的问题,请参考以下文章

可以在具有默认值(作为可选参数)的参数中分配 const 变量吗?

我们可以为返回可选值的 swift 函数添加 @objc 吗?

Python线程

如何在 python 类中添加可选参数?

你可以在 Typescript 函数中有可选的解构参数吗?

Python函数的参数类型