python是否有逻辑或?的赋值运算符?

时间:2018-03-08 15:36:37

标签: python

有没有办法在python中进行逻辑或赋值?很像a += 5

我希望能够做到这样的事情:

a = True
a or= time_consuming_func_returning_bool()

避免调用耗时的功能。那会很整洁。

1 个答案:

答案 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只是True1可以是任意数字,因此必须对其进行评估。使用ba or b()将按预期工作。