[英]Python for loop with or?
最近我遇到了一些混淆的python代碼,我沒有問題分離出來並理解代碼的小碎片。 但是,我遇到了一個我不理解的陳述:
v, x = 1500, 1000
C = range(v*x)
import struct
P = struct.pack
M, j = '<QIIHHHH', open('M.bmp','wb').write
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24)) or C:
在最后一行代碼中,我不明白這個for
循環如何與一個or
坐在那里一起工作。 代碼運行正常,但我不知道它在做什么。 我嘗試查看Python文檔,但我沒有看到任何內容。 這段代碼有什么作用?
write
總是返回None,所以這個表達式只是用於調用j(...)
的副作用。 循環將始終超過C
部分反混淆版本
import struct
v = 1500
x = 1000
C = range(v*x)
M = '<QIIHHHH'
with open('M.bmp','wb') as fin
fin.write('BM'+struct.pack(M, v*x*3+26, 26, 12, v, x, 1, 24))
for X in C:
...
該代碼段似乎是在寫一個bmp文件的標題。 我想for循環會寫出余數
如果返回j()== False,則迭代C
分步看看它:
首先,它評估這個:
j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))
如果這被認為等於False(空列表,無,0等),那么它會計算:
C
並將其作為迭代傳遞給for
循環
應當指出的是, or
不是部分for
語法。 它在被傳遞到您熟悉的for
語法之前進行了評估
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.