次の内容のモジュール/ファイルがある場合foo.py
:
from math import sqrt
def foo():
pass
別のスクリプトにインポートするとsqrt
、モジュール内でも定義されますfoo
。
import foo
dir(foo)
その出力は
[..., # other things
'foo',
'sqrt']
これを防ぐにはどうすればよいですか?つまり、sqrt
エクスポートしないように指定するか、特定の関数のみ (この場合はユーザー定義の関数のみ) をエクスポートします。ユーザー定義関数については、アンダースコアをプレフィックスとしてモジュール内でプライベートに定義できることを知っていますが、この場合はユーザー定義関数ではないため、アンダースコアプレフィックスを使用して定義することはできません。