![](/img/trans.png)
[英]Should I use 'in' or 'or' in an if statement in Python 3.x to check a variable against multiple values?
[英]Should I use 'not x' or 'x == 0' to check to see if the result of a modulo operation is zero in python
我真的以為我已經在這上面找到了一些東西,也許它就在那里,我想念它。 如果是這種情況我道歉,我會關閉這個問題。
我正在檢查模運算是否返回零結果,我想知道哪些是“更好”(更pythonic,更快,無論如何):
if not count % mod
OR, if count % mod == 0
我想我應該澄清並說我對truthy和falsey值有很好的理解,我只是想知道是否有一個具體的理由使用一個而不是另一個。 特別是考慮到這總是一個數字(否則%
運算符會拋出一個TypeError)。
通常,使用not x
而不是x==0
的風險是您可能匹配另一種也是假的值(例如, None
或空列表)。
在這種情況下,由於x
必須是數字,因此使用not x
表示x==0
是安全的。 使用看起來更具可讀性的。
對我來說,第一個版本看起來有點奇怪,因為我希望算術運算的結果被視為一個數字,所以我更喜歡第二個版本。 但是,為了方便起見,有謬誤,並且在很多情況下使用它是有意義的。
注意差異:
if not foo
對於foo = 0
和對於foo = ""
以及對於foo = None
if foo == 0
對於foo = 0
則為真,但對於foo = ""
和foo = None
不然
您可能需要考慮以下兩種情況:
count = 15
mod = 5
print count % mod == 0 # True
print not count % mod # True
一切似乎都很好。 好的,現在讓我們破解這段代碼:
count = '%s'
mod = ''
print count % mod == 0 # False
print not count % mod # True
如您所見 - 您的兩個案例並不相同。 這可能是值得考慮的事情。
我會說使用x==0
因為如果x = False
not x
也會評估為true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.