我有一個爲其定義next
方法的類。當我從創建該類的對象的命令行運行腳本並運行以下循環來調用next
時,將不會打印next的返回值,但是當我從Python控制檯運行相同的行時,會返回值。當從Python Shell,IPython控制檯以及從腳本內部運行時,下一個函數的不同行爲
更具體地講,如果我們將以下腳本保存爲tests.py
:
class Solution():
def __next__(self):
return 1
s = Solution()
for _ in range(5):
next(s)
和運行python test.py
,沒有打印(我測試了這個關於Python 3.4和Windows機器)。
然而,如果我們作爲一個Python外殼下面,輸出將被打印:
(python34) C:\>python
Python 3.4.5 |Anaconda custom (64-bit)| (default, Jul 5 2016, 14:53:07) [MSC
v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class Solution():
... def __next__(self):
... return 1
...
>>> s = Solution()
>>> for _ in range(5):
... next(s)
...
1
1
1
1
1
在IPython的控制檯還沒有輸出打印。
我以爲我知道..結果我不太清楚。我的答案中記錄的行爲僅在IPython中觀察到,而不是標準的IDLE。所以,我會刪除我的答案。 –
你如何運行這些代碼?你是用python控制檯,ipython還是命令行來運行它?我認爲你所看到的取決於你如何運行它。你還可以用簡化的形式包括'Solution'類嗎? – nos
是的,我也注意到這個行爲實際上取決於你在@ COLDSPEED之後如何運行代碼。只要有機會,我會盡快更新信息。它與temp變量沒有任何關係。 –