ホームページ >バックエンド開発 >Python チュートリアル >Python での __name__ 値のテストの詳細な紹介
この記事では、主に Python の __name__ 値のテストの詳細な紹介を紹介します
テストで使用されるコードは次のとおりです:
#test_name0.py def test(): return name print name print test() import test_name1 test_name1.test()
#test_name1.py def test(): print name print name
pythonトップレベルのインタープリターでコマンドを実行すると、結果は次のようになります:
In [1]: type(name) Out[1]: str In [2]: print name Out[2]: main In [3]: import test_name0 test_name0 test_name0 test_name1 test_name1
cmd で の <code>python test_name0.py
を実行すると、結果は次のようになります: python test_name0.py
,结果如下:
main main test_name1 test_name1
由此可以看出:
(1)在python顶层解释器或直接运行的脚本中name=='main'
(2)在调用的模块中name==<a href="http://www.php.cn/code/8212.html" target="_blank">module</a> name
(3)发现一个非预期的情况,就是在运行了test_name0.py
的脚本后再import test_name0
,或者import test_name0
后再运行test_name0.py
test_name0 test_name0 test_name1これからわかります: (1)
name== 'Python のトップレベル インタプリタ内の main またはスクリプトを直接実行します '
(2) 呼び出されたモジュール内 name==<a href="http://www.php.cn/code/%208212.html" target="_blank">モジュール<p> 名</p></a>
(3) 予期しない状況が見つかりました。つまり、test_name0.py
スクリプトを実行した後、import test_name0
、または import test_name0
の後に test_name0.py
スクリプトを実行すると、結果は
main main test_name1または
test_name0 test_name0 test_name1 test_name1ではなく
main main test_name1 test_name1または rrreee になります。 .segmentfault で問題のキーを整理し、質問をしてこの問題が発生した理由を見つけました。 🎜つまり、Python モジュールには 🎜 キャッシュ🎜 があり、それを一度インポートしてから再度インポートした場合、モジュールの最上位スコープ内のコードは再度実行されません。 🎜🎜 (4) 2 つのモジュール test_name0 と test_name1 のテスト 🎜 関数 🎜 は同じ名前です。モジュール名が異なるため、2 つのテスト関数を区別できますが、モジュール名の重複は避けなければなりません。 。 🎜
以上がPython での __name__ 値のテストの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。