有没有办法在python中进行逻辑或赋值?很像a += 5
我希望能够做到这样的事情:
a = True
a or= time_consuming_func_returning_bool()
避免调用耗时的功能。那会很整洁。
答案 0 :(得分:2)
不是真的。我记得最近的两个选项:
$(document).ready(function(){
var wrapper_home = $(".container_home");
var add_button_home = $(".add_form_field_home");
var y = 1;
$(add_button_home).click(function(e){
e.preventDefault();
console.log('we here');
y++;
$('.inputFrm_home').append('<div><input type="text" name="env_name[]"/> =
<input type="password" name="env_contents[]" class="myInput"/>
<a href="#" class="delete">Delete</a><br></div>'); //add input box
});
$(wrapper_home).on("click",".delete", function(e){
e.preventDefault(); $(this).parent('div').remove(); y--;
})
});
除非我误解,你的意思是按位:
a = a if a else b
a = a or b
结果为a=5 #101
a|=3 #010
(a==7
)。当然111
可以与|=
和True
一起使用,但我不确定它在语言中是否合适:
False
有效,a=True
a|=False
将为a
。这里唯一关心的是语义。如果用法被隐藏在深层代码中,那么某人略读将假设您在这里使用二进制操作 - 在考虑逻辑时,上述方法更具可读性。
@Moberg 提到的一个更大的警告是布尔运算符不是懒惰的。定义
True
然后
def b():
print("Don't print this!")
return False
即使a|=b()
为True,也会打印字符串,a
是什么并不重要。这是因为就布尔运算而言,b
只是True
,1
可以是任意数字,因此必须对其进行评估。使用b
或a or b()
将按预期工作。