簡體   English   中英

Python上的返回語句似乎不起作用(在Spyder上)

[英]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有不同的評估模型:

  1. Run file ,相當於python my_file.py
  2. Run lineRun cell ,將行或單元格的內容復制到IPython控制台並在那里運行。 此模型不需要在代碼中添加print

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM