簡體   English   中英

我應該使用'not x'或'x == 0'檢查模數運算的結果在python中是否為零

[英]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是安全的。 使用看起來更具可讀性的。

對我來說,第一個版本看起來有點奇怪,因為我希望算術運算的結果被視為一個數字,所以我更喜歡第二個版本。 但是,為了方便起見,有謬誤,並且在很多情況下使用它是有意義的。

來自Python的禪宗

顯式優於隱式。

在您的情況下,您顯式檢查整數值,模數%運算符的結果,在這種情況下,您應該測試== 0 ,而不是falsey值。

注意差異:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM