私はPythonを学んでいて、まだ1年ほど勉強していますが、まだ初心者です。メインモジュール内で呼び出される関数のモジュールを作成しようとしています。呼び出されたモジュールの各関数を実行するには、数学モジュールが必要です。呼び出されたモジュール内に数学モジュールをインポートせずにこれを行う方法があるかどうか疑問に思っています。ここに私が持っているものがあります:
main.py
:
from math import *
import module1
def wow():
print pi
wow()
module1.cool()
module1.py
:
def cool():
print pi
実行すると、次のmain.py
ようになります。
3.14159265359
Traceback (most recent call last):
File "Z:\Python\main.py", line 10, in <module>
module1.cool()
File "Z:\Python\module1.py", line 3, in cool
print pi
NameError: global name 'pi' is not defined
理解に苦労しているのは、実行時に名前エラーが発生する理由ですmain.py
。変数にアクセスできるpi
ため、インポート時に変数がメインモジュールに対してグローバルになることを知っています。また、印刷して取得できるため、インポート時にメインモジュールに対してグローバルになるwow
ことも知っています。はメイン モジュールのグローバル名前空間内にあるため、プログラムは最初に変数の関数内を調べて、そこに見つからない場合はモジュール内の変数を調べて、そこで見つけるべきではありませんか?cool
module1.cool
<function cool at 0x02B11AF0>
cool
cool
pi
main
pi
私が知っているこれを回避する唯一の方法は、内部に数学モジュールをインポートすることですmodule1.py
。私はその考えが好きではありません. 名前空間の把握に近づいているように感じますが、これについては助けが必要です。ありがとう。