while 1:1
以上代碼的輸出是什麼?有沒有辦法檢查上面的循環是做什麼或沒有做什麼?一種方法是在while循環進入人體的打印語句,如:下面的無限循環是做什麼的?
while 1:
1
print "2"
但是,不輸入任何while循環,我們可以檢查身體新的循環至少做什麼?
while 1:1
以上代碼的輸出是什麼?有沒有辦法檢查上面的循環是做什麼或沒有做什麼?一種方法是在while循環進入人體的打印語句,如:下面的無限循環是做什麼的?
while 1:
1
print "2"
但是,不輸入任何while循環,我們可以檢查身體新的循環至少做什麼?
您可以檢查,以這種方式:
>>> def f():
... while True: 42
...
>>>
>>> import dis
>>> dis.dis(f)
2 0 SETUP_LOOP 10 (to 13)
>> 3 LOAD_GLOBAL 0 (True)
6 POP_JUMP_IF_FALSE 12
9 JUMP_ABSOLUTE 3
>> 12 POP_BLOCK
>> 13 LOAD_CONST 0 (None)
16 RETURN_VALUE
>>>
所以你可以看到,它只是什麼都不做除了循環。
老實說,我很驚訝,它甚至沒有加載給定值的地方。
循環當然是在做某件事,儘管可以說沒有用。如果你在交互式shell中,輸出是無窮無盡的1
s。在腳本中,不會有輸出。
在Python中,1
計算結果爲True
,所以while
循環類似於while True:
試試這個:
print "While loop starting!"
while 1:1
print "While loop has finished!"
,你會發現第二行從未打印。
你似乎在某種誤解之下勞動。我不知道我是否正確地解釋了你,但是在正常情況下,你寫的程序甚至沒有「不做任何事情」的選擇:它是計算機的一個基本方面,它不斷地執行指令。
如果你在硬件級別編程,在那裏你可以告訴CPU暫停,那麼真正讓電腦「不做任何事情」的唯一方法是,但在一般的體系結構中,只有內核才能訪問這樣的特權指令和像Python這樣的高級編程語言不會暴露它們。
你可以爲了都不做,在用戶程序的級別做的,就是讓內核不安排你的過程中,如通過執行調用sleep
,或阻塞I/O調用或類似的。因爲你沒有明確地做這樣的事情,所以除了執行之外,你的程序是沒有別的選擇的。要求「驗證」它是否在做某事就像要求驗證1 + 1 = 2
:根據定義,這是真的。
你是什麼意思的「做事」?只要程序沒有退出,很明顯它正在執行* something *:循環。你還在尋找什麼其他類型的動作? – Dolda2000
也許你可以看看任務管理器並查看進程的資源?很顯然,如果您允許寫入的唯一代碼是「while 1:1」,那麼您將需要查看除IDLE Gui或python輸出以外的其他位置。 – chase