![](/img/trans.png)
[英]Python - Can't seem to get return statement to work in simple function?
[英]Return statement on Python does not seem to work (on Spyder)
我已經使用Python一段時間了,並且我使用的IDE沒有任何問題(我使用過WingIDE,現在我使用Spyder)。
但是當我開始測試我在編輯器上輸入的一些代碼時,今天,return語句似乎不起作用。 然后我寫了更多的基本測試,看看返回做了什么,並發現其他功能也不能正常工作。
例如,對於該功能,
def test():
return 2
'''the code below is written in the editor'''
test()
print(type(test()))
print(test())
在編輯器上運行代碼之后。
test()
返回'nothing'(但它實際上並不是'nothing / None / blank space')
type(test())
返回'nothing'(但它實際上並不是'nothing / None / blank space')
print(type(test())
打印'class'int'''
print(test())
打印2
但是當我在控制台上鍵入test()
時,它返回2
,當我在控制台上鍵入type(test())
時,它返回class: int
。
請注意,在更新Spyder之前和之后會出現相同的結果。 之前,編輯器中的代碼與控制台中的代碼的運行方式相同,因為在編輯器中運行代碼時,編輯器中輸入test()
會返回2。
Python / Spyder之前沒有做過任何奇怪的事情,發生了什么?
這是一個可視化。 編輯中的代碼
在控制台中顯示的編輯器中運行代碼后的結果
假設第116-118行的缺失輸出讓你感到不安:
編輯器將您的代碼作為普通的python腳本處理,這意味着ala test()
語句不會打印其結果。
你得到立即顯示的東西的結果是python控制台的特殊功能,而不是正常的python行為。
要實際打印結果,您必須像在第119-120行中那樣調用print(test())
更新:在PyCharm中進行一些測試后,我得到了以下行為:
復制和粘貼到python控制台:
def test():
return 2
test()
>>press enter
確實會導致輸出空白,但是這樣:
def test():
return 2
>>press enter
test()
>>press enter
按預期打印2
。 所以我的結論是,Spyder可能沒有顯示返回值,因為它正在執行多指令腳本而不是單個操作。
為了擴展Fabian的N.答案,Spyder有不同的評估模型:
Run file
,相當於python my_file.py
。 Run line
和Run cell
,將行或單元格的內容復制到IPython控制台並在那里運行。 此模型不需要在代碼中添加print
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.