【问题标题】:One liner Python equivalent of JavaScript like assignment when value is falsey当值为 false 时,一种类似于 JavaScript 的线性 Python 等价物
【发布时间】:2016-04-19 03:59:24
【问题描述】:

考虑 JavaScript 中的函数:
如果第一次调用没有定义val,则变为0

function someRecursiveFn (item, val) {
    val = val || 0;
    ...
}

如何在 Python 中进行相同的赋值?

def someRecursiveFn(item, val):
    val = ??
    ...

【问题讨论】:

标签: javascript python


【解决方案1】:

您可以在函数中使用关键字参数而不是普通参数:

def someRecursiveFn(item, val=None):
    val = val or 0

所以val 将默认为None,如果它没有传递给函数调用。

val = val or 0 将确保将val=Noneval='' 转换为0。如果您只关心首先定义val,则可以省略。

【讨论】:

    【解决方案2】:

    这个:

    def someRecursiveFn(item, val):
        val = val if val else 0
    

    但是 python 成语 if val 相当广泛,因为它可以有不同的含义,其中一些甚至可能在特定上下文中表示某些东西(例如 0 值),这与 javascript 中的 undefined 值相反.

    在python中,以下所有都被认为是false

    • 错误
    • 任何数字类型的零,例如,0、0L、0.0、0j。
    • 任何空序列,例如,''、()、[]。
    • 任何空映射,例如 {}。
    • 用户定义类的实例,如果该类定义了 nonzero() 或 len() 方法,当该方法返回整数零或布尔值 False

    【讨论】:

      【解决方案3】:

      val = val if val else 0

      #if val is not None, it will assign itself, if it is None it will set val=0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-29
        • 2018-07-22
        • 1970-01-01
        • 2011-10-29
        • 2013-06-13
        • 2013-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多