では許可されていない、あなたが最後に表示されます:Pythonの:あなたは、モジュールからコンパイルPythonバイトコードを見れば、なぜ `return`モジュール
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
すなわち、 return
は、モジュールのルートレベルで完全に有効です。ただし、ソースコードで使用しようとすると、次のようになります。
SyntaxError: 'return' outside function
なぜですか?
これはもちろん言語設計の決定です。しかし、なぜそれが取られたのですか? return
は、しばしばモジュールで非常に便利です。例えば。私は時々、モジュールの先頭で、このコードを書きたい:
import sys
if sys.platform != "linux2":
print "your platform is not yet supported"
# define some stubs
def foo(): pass
def bar(): pass
return
そして、私は(それは私が望んでいないモジュールはないロードにつながるので)そこに例外を発生させる必要はありません。
は実は、私はその場でPythonのバイトコードを操作し、ちょうどリターン(復帰が行われる最後までまたは私の場合にはジャンプを)行うことができます一緒にいくつかのコードをハッキング。これは機能します。 CPythonだけの理由は、コードオブジェクトを操作する標準的な方法がないためです。
Hereです。可能な回答については
:私は本当の証拠、いくつかの過去のグイド・ヴァンロッサムからの声明またはので、これについて、あまりないだけで任意のランダムな議論を好むだろう。私はもちろん、(すでに提示されているように)これは両方の利点と私自身の欠点ですが、私は実際にそれに対して大きな理由は見ません。
なぜ例外は発生しませんか?実行を停止し、呼び出し元が例外をリッスンするまでの理由を返す –
@JoranBeasley:モジュールをロードしません。私はまだモジュールをロードしたい場合について話しています。 – Albert
は、ユーザーがインポートできる別のモジュールを持っています。サポートされていないとサポートされていないはずです... '__init __。py'で' try:import no_linux2;例外:import alt_implementation as no_linux2' –