我知道import *不好,但是当我懒得键入或记住导入内容时,有时会用它来快速制作原型(prototype)

我正在尝试以下代码:

from OpenGL.GL import *

shaders.doSomething()

结果为错误:“NameError:未定义全局名称'shaders'”

如果我更改进口:
from OpenGL.GL import *
from OpenGL.GL import shaders

shaders.doSomething()

错误消失。为什么*不包含shaders

最佳答案

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 *

希望这可以帮助!

关于Python: `from x import *`不导入所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19883870/

10-10 10:59