我在emacs編碼python。然而,不知何故,運行在emacs上的python解釋器讓我感到吃驚。在Emacs的Python:__name__ =='__main__',但不知何故
如果我寫
print()
print(__name__)
print(__name__=='__main__')
if __name__ == '__main__':
print("indeed")
在Emacs的緩衝區,並告訴emacs的啓動解釋器,並運行此緩衝區的內容,我得到含
Python 3.3.5 (default, Mar 18 2014, 02:00:02)
[GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
>>>
__main__
True
>>>
(無論__main__
和緩衝True
是打印語句的輸出; python緩衝區總是顯示>>>
並在它之後立即打印。我意識到這一點,這不是問題。)
從命令行,python
和python -i
都如預期的那樣顯示「確實」。
Emacs如何能夠評估__name__=='__main__'
到True
的不一致性,而不執行if __name__ == '__main__':
內部的東西? 如何重新配置它,使其不再這樣做?
@MartijnPieters:它的打印字符串'「__main __」''爲... __main__' – geoffspear
@Wooble:啊,Emacs緩衝區直接在交互式提示符下執行代碼。疑難雜症。 –
這似乎是舊版本的elpy中的一個錯誤:https://github.com/jorgenschaefer/elpy/issues/69(或者,如果您不使用elpy,它是python.el的「有用功能」。 ) – geoffspear