私に問題を与えるさらに別の単純な問題。
次のものがあるとします。
#!/usr/bin/python
ref = 30
def f(x):
print x + ref
f(50)
これまでのところ、私の目的にとって便利な側面の 1 つは、(おそらく) refが関数fによってグローバル変数として扱われるため、 fの引数として指定する必要がないことです。
ただし、fを別のモジュール、たとえばmyfunctionsに格納すると問題が発生します。
#!/usr/bin/python
import myfunctions
ref = 30
myfunctions.f(50)
myfunctionsには、上記のfの定義が含まれています。これを実行しようとすると、「グローバル名 'ref' が定義されていません」という NameError が発生します。
これは、メイン モジュールと「myfunctions」モジュールのグローバル名前空間が異なるためだと推測していますが、 fの引数としてrefを必ずしも含める必要なく、これを回避する良い方法はありますか?