这是我的第一个代码:
def __init__(self, attrs=None):
if not attrs:
attrs = {}
attrs['data-select2-json'] = "true"
然后我尝试像在JavaScript中那样:
def __init__(self, attrs=None):
attrs = attrs or {}
attrs['data-select2-json'] = "true"
它似乎可以工作,但是我想知道:“或{}”在python中是否像在javascript中一样工作?(艰苦的日子!),它和if
我的第一个代码的简单“ ”一样快吗?
根据文档:
表达式
x or y
首先计算x
; 如果x
为true,则返回其值;否则,y
将求值并返回结果值。
这意味着您的两个代码都执行相同的操作:
if not attrs:
attrs = {}
评估attrs
。当attrs
为true时-不执行任何操作,否则分配{}
给attrs
attrs = attrs or {}
评估attrs
。当attrs
为true时-分配attrs
给attrs
(不确定优化),否则分配{}
给attrs
在JavaScript中,运算符x || y
还会x
在x
计算结果为true时返回,y
否则返回。从标准引用:
LogicalORExpression
:LogicalORExpression || LogicalANDExpression
- 我们
lref
要评估的结果LogicalORExpression
。- 我们
lval
是GetValue(lref)
。- 我们
lbool
是ToBoolean(lval)
。ReturnIfAbrupt(lbool)
。- 如果
lbool
为true,则返回lval
。- 我们
rref
要评估的结果LogicalANDExpression
。- 返回
GetValue(rref)
。
但是,您应该注意在JavaScript中转换为布尔值:
> Boolean({})
true
> Boolean([])
true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句