0

問題の簡単なデモンストレーション:
モジュールを定義し、次functions.pyを含む名前を付けます: (これは単なる例です)

from __future__ import division
from scipy import *

def a():
    return sin(1)

次のように、別のファイルで使用してみてください。

import functions as f

入力fすると、ポップアップ リストにすべてのscipyコンテンツが表示されますが、a! 見る:
ここに画像の説明を入力

これを解決するには?

この問題により、モジュール内に何がfunctions存在するかを確認することが難しくなります。

注:
1)モジュールfunctionには多数のユーザー定義関数があると考えてください。
2) scipy 関数がグローバルに利用できる理由は問題ありません。それで大丈夫です。問題は、なぜそれらが f のメンバーとして表示されるのか?!
おそらくPyscripterのバグです。よくわかりません!

4

2 に答える 2

2

モジュールfunctionsには、グローバルにインポートされ、そのスコープ内で宣言されたすべてのものへの参照が含まれます。

モジュール内で行っているfrom scipy import *ように、すべてがインポートさscipyれ、関数モジュールからすべての関数にアクセスできるようになります。

a()インポート後にのみ表示したい場合は functions、これに変更します

# functions.py
def a():
    from scipy import sin
    return sin(1)

これにより、モジュールをインポートする人に対してインポートへの参照が存在しないことが保証されます。

ここにあなたが通過できるいくつかの読み物があります.imports

于 2012-05-31T09:41:03.423 に答える
0

まず、 を避ける必要がimport *あります。したがって、コードは次のようになります。

from __future__ import division
from scipy import sin

def a():
    return sin(1)

また

from __future__ import division
import scipy

def a():
    return scipy.sin(1)

もう 1 つの方法は、これをモジュールに追加することです。

__all__ = ['a']
于 2012-05-31T09:45:41.430 に答える