2016-05-02 22 views
0

リロード(SYS)を使用した後、IDLEシェルで表示を停止します。入力した場合、print('hello world')、何も表示されません。結果は、Pythonの2.7シェルで

ところで、なぜreload(sys)がここに必要ですか?それがなければ、setdefaultencoding()はエラーを引き起こしますか?

+0

これで、その方法を使用しない理由が分かりました。 –

+0

任意の説明を理解できます –

答えて

0

reload(sys)を必要とする質問は、IDLEとは関係ありません。 2.7のdocエントリの最後の文を読んでください。

sys.setdefaultencoding(名)

現在のUnicode処理のデフォルトエンコーディングを設定します。 nameが利用可能なエンコーディングと一致しない場合は、 LookupErrorが送出されます。この機能は、 でサイトモジュールの実装と、必要に応じてsitecustomizeによってのみ使用されるように意図されています。 サイトモジュールで使用されると、sysモジュールの 名前空間から削除されます。

この機能は使用しないでください。 3.xでは、削除されました(または表示されなくなりました)。したがって、標準のPythonコンソールインタプリタからは次のようになります。

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' 

2.7では、モジュールを再初期化して削除を元に戻します。したがって、

>>> reload(sys) 
<module 'sys' (built-in)> 
>>> sys.setdefaultencoding 
<built-in function setdefaultencoding> 

EDIT:無関係な素材が削除され、以下の正解が追加されました。

印刷に関する問題については、も再ロードしてください。は、出力ストリームのIDLEの変更を元に戻します。これにより、印刷コマンドが無効になります。彼らは実行しますが、実際には何も送信されません。

>>> print 'abc', u'abc' 
>>> 

上記はリロード後ですが、復活したsetdefaultencodingを呼び出す前です。私は、システムのリロードがその変更を元に戻してIDLEを無効にすることを警告するメモをIDLEの文書に追加する予定です。