28

インタラクティブモードを開いて次のように入力した場合:

__builtins__ = 0 # breaks everything

セッションを完全に中断しましたか?もしそうなら、インタプリタが処理できないビルトインモジュールに__builtins__を割り当てるために舞台裏で何が起こっているのでしょうか?そうでない場合、どうすればこれから回復できますか?

それを修正するための私自身の試みのほんの一部:

  • 何かをインポートしようとすると、「ImportError__import__notfound」というエラーが発生します。
  • 数式の評価以外の目的で使用する可能性のあるすべての関数が壊れています
  • まだアクセス可能な別の変数__package__がありますが、それを使用できるかどうか/どのように使用できるかわかりません。
4

3 に答える 3

3

基本的に、保護された名前と予約済みの名前をいじることは、セッションを中断することを意味し、回復する方法がない場合があります。

たとえば、シェルで次のように入力できます。

True = False # The chaos begins!

これらは他のプログラミング言語では不可能ですが、python を使用すると、すべてが壊れてしまうとしても、やりたいことを実行できます。

于 2012-11-09T11:30:01.430 に答える