当值为false时,一个线性Python等价于类似JavaScript的赋值

2024-09-28 21:02:39 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑JavaScript中的一个函数:
如果在第一次调用中没有定义val,它将变成{}

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

如何在Python中分配相同的方法?在

^{pr2}$

Tags: 方法函数定义functionvaljavascriptitempr2
3条回答

这个:

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

但是python习语if val非常宽泛,因为它可以有不同的含义,其中一些甚至可以表示特定上下文中的某些内容(例如0值),与javascript中的undefined值相反。在

在python中,以下所有内容都被视为false

  • 没有
  • 零,0.0L,例如0.0L,任何类型
  • 任何空序列,例如,',(),[]。在
  • 任何空映射,例如{}。在
  • 用户定义类的实例,如果该类定义了一个非零()或len()方法,则当该方法返回整数0或bool值False时

val = val if val else 0

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

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

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

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

val = val or 0将确保val=None或{}转换为0。如果您只关心首先定义val,则可以省略。在

相关问题 更多 >