Die Frage nach der Notwendigkeit reload(sys)
hat nichts mit IDLE zu tun. Lesen Sie den letzten Satz des 2.7 doc-Eintrags.
sys.setdefaultencoding (name)
die aktuelle Standard-String-Codierung durch die Unicode-Implementierung verwendet ein. Wenn der Name keiner verfügbaren Codierung entspricht, wird LookupError ausgelöst. Diese Funktion soll nur von der Site-Modul-Implementierung und bei Bedarf von sitecustomize verwendet werden. Sobald es vom Site-Modul verwendet wurde, wird es aus dem Namespace des sys-Moduls entfernt.
Sie sollten die Funktion nicht verwenden. In 3.x wurde es entfernt (oder unsichtbar gemacht). Daher das Folgende vom Standard-Python-Konsolen-Interpreter.
C:\Users\Terry>py
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys.setdefaultencoding
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'
In 2.7, Neuladen initialisiert das Modul neu und macht das Entfernen rückgängig. Daher
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding
<built-in function setdefaultencoding>
EDIT: Irrelevantes Material entfernt und die folgende richtige Antwort hinzugefügt.
In Bezug auf das Druckproblem: reload auch macht IDLE die Änderung der Ausgangsströme. Dies deaktiviert Druckbefehle. Sie führen aus (nicht erhöhen), aber nichts wird tatsächlich gesendet.
>>> print 'abc', u'abc'
>>>
Das obige ist nach dem Neuladen, aber vor dem Aufruf der wiederbelebten setdefaultencoding. Ich plane, eine Notiz der IDLE-Dokumentwarnung hinzuzufügen, die besagt, dass das erneute Laden von sysle IDLE deaktiviert, indem es seine Änderungen rückgängig macht.
Und jetzt wissen Sie, warum Sie diese Methode nicht verwenden sollten. –
jedes erklären wird geschätzt –