10

私はそれimport *が悪いことだと分かっていますが、インポートを入力したり覚えたりするのが面倒なときに、簡単なプロトタイピングに使用することがあります。

私は次のコードを試しています:

from OpenGL.GL import *

shaders.doSomething()

エラーが発生します: `NameError: グローバル名 'shaders' が定義されていません'

インポートを変更した場合:

from OpenGL.GL import *
from OpenGL.GL import shaders

shaders.doSomething()

エラーが消えます。*を含まないのはなぜshadersですか?

4

3 に答える 3

9

shadersがサブモジュールであり、に含まれていない__all__場合は、from … import *インポートされません。

はい、それはサブモジュールです。

于 2013-11-09T22:29:31.580 に答える
4

shaders関数ではなく、サブモジュールです。

構文from module import somethingはサブモジュールをインポートしません(別の回答が述べているように、で定義されていません__all__)。

モジュールを取得するには、具体的にインポートする必要があります。

from OpenGL.GL import shaders

または、いくつかの機能のみが必要な場合shaders:

from OpenGL.Gl.shaders import function1, function2, function3

のすべての機能が必要な場合はshaders、次を使用します。

from OpenGL.Gl.shaders import *

お役に立てれば!

于 2013-11-09T22:37:27.357 に答える