python中有一个蕴涵逻辑运算符吗?

run*_*g.t 14 python math implication logical-operators

我想在python中写一个带有逻辑含义的语句.就像是:

if x => y:
  do_sth()
Run Code Online (Sandbox Code Playgroud)

当然,我知道我可以使用:

if (x and y) or not x:
  do_sth()
Run Code Online (Sandbox Code Playgroud)

但是在python中有这个逻辑运算符吗?

Jua*_*mpi 23

p => q是一样的not(p) or q,所以你可以试试!

  • TTL同意 - 但是在代码中看起来并不是那么容易,尽管比原版更简单.一个函数 - 即`暗示(x,y)` - 可能有助于更多地传递这个想法,如果这样的构造经常发生以保证名称. (7认同)
  • @ user2246674同意,为了清楚起见,我建议将其作为一个功能. (5认同)
  • 如果你创建一个“implies(x, y)”函数,一个潜在的问题是:由于 Python 的严格求值,后续的“y”将始终被求值(该操作*不会*短路)。你可能会认为这是显而易见的,但我只是花了 30 分钟来思考这个问题。 (3认同)

Ada*_*ski 7

只是因为它很有趣:x => y可能bool(x) <= bool(y)在python中.

  • 这是(最终)确凿的证据,证明`True`应该是`-1`而'False`应该是'0'对于布尔人来说!(而不是当前的'True == 1`的Python约定.)因为那时我们有`x => y`匹配`y <= x`(看起来像是一个从右到左的含义)的布尔值. (4认同)

Gar*_*tty 6

你的问题是在Python中是否有一个逻辑运算符,简单的答案是否:文档列出了布尔运算,而Python根本就没有这样的东西.

显然,正如Juampi的答案所指出的那样,逻辑等效的操作稍微短一点,但没有一个单独的操作符.


小智 6

有一个相反的蕴涵运算符:

if y ** x:
  do_sth()
Run Code Online (Sandbox Code Playgroud)

内容为:如果y由x隐含。

归功于https://github.com/cosmologicon/pywat

  • @ running.t这恰好与`x =&gt; y`具有相同的效果,但不是用于此目的的运算符。这是幂运算符,不是逻辑运算符,而是数字运算符。它不返回True或False,而是一个数字。这比较慢,并且可能会引入错误,更不用说难以理解和难以理解了。我强烈建议不要这样做,而应根据[Juampi的答案](http://stackoverflow.com/a/16405931/722121)使用`not(p)或q`。 (3认同)