![](/img/trans.png)
[英]Python: Even if the the if statement equals false it still executes the code inside the if statement
[英]Python if statement executes on false, and true
我在腳本中使用某些if語句遇到麻煩。 我從使用./iojson.py "nodev"
的終端運行,但是代碼仍然對"enum"
或"snum"
執行if語句,由於NameError
導致腳本停止。
代碼如下:
devicelist = sys.argv[1]
if devicelist == "snum" or "enum":
if devicelist == "snum":
print("It executed snum")
with open('SNUM.txt') as f:
content = f.readlines()
if devicelist == "enum":
print("It executed enum")
with open('ENUM.txt') as f:
content = f.readlines()
content = [x.strip() for x in content]
devices = ''.join(content)
data['attachments'].append({
'fields' : [{
'title' : 'Serial numbers:',
'value' : devices
}]
})
elif devicelist == "nodev":
print("It executed nodev")
pass
執行后,響應為:
Traceback (most recent call last):
File "./iojson.py", line 43, in <module>
content = [x.strip() for x in content]
NameError: name 'content' is not defined
但是我的理解是,它首先不應該成為content
變量。 我究竟做錯了什么?
if devicelist == "snum" or "enum":
永遠是真的。
這是編譯器將檢查的內容:
if (devicelist == "snum") or "enum":
第一個檢查為False
,而第二個將"enum"
轉換為布爾值的檢查始終為True
。
解決方法:
if devicelist in ("snum", "enum"):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.