2016-08-12 99 views
1

我在Pycharm上用python3。 我可以通過shift + control + R(快捷方式運行,相當於按下綠色三角運行按鈕)運行代碼 或 運行代碼shift + alt + E將代碼加載到由interactive shell debugging with pycharm建議的Python控制檯中Pycharm:在Python控制檯中運行和運行之間的不同行爲?

shift + control + R不給出錯誤。

SHIFT + ALT + E拋出異常:

TypeError: an integer is required (got type str) 

我運行的代碼如下:

import sys 

sys.exit('exist') 

print('shouldnt print') 

我想了解是什麼原因導致不同的行爲,我怎麼能避免這種情況。該代碼與python3的sys.exit文檔內聯。

回答

1

當按下Shift + Alt + E時,它進入交互式shell。 sys.exit()不適用於IDLE應用程序,如Interactive Shell。對於IDLE應用程序,則使用內置的os._exit()

當你仔細檢查堆棧跟蹤,你會發現此行爲:

Traceback (most recent call last): 
    File "<input>", line 4, in <module> 
    File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevconsole.py", line 260, in DoExit 
    os._exit(args[0]) 

TypeError: an integer is required 

os._exit()執行(而不是sys.exit("exist")),並且只需要一個整數作爲參數。請查看這裏的文檔:https://docs.python.org/2/library/os.html#os._exit

+0

我怎麼知道什麼適用於IDLE應用程序,哪些不適用?篩選列表時遇到類似問題。 – Lisa

+0

@Lisa,我不確定是否還有其他例外。但是,如果您將問題發佈在SO上,也許有人可以看一看並回答。 –