在Blender Python中,我有以下问题:
导入时:
import mathutils
def write_something():
var = mathutils.Matrix.Rotation(-math.pi/2, 4, 'X')
给出“全局名称'mathutils'未定义”
但如果我这样做
def write_something:
import mathutils
var = import mathutils.Matrix.Rotation(-math.pi/2, 4, 'X')
它正在工作,但为什么导入超出范围 - 我认为通过使用导入我可以访问它?
答案 0 :(得分:1)
问题是Python import
是在运行时完成的。这意味着当您import
时,您只需将模块绑定到变量,然后您可以使用该变量。
在函数内部,这只是简单地将模块绑定到该函数中的局部变量(这通常被认为是一个非常糟糕的主意。除非你是,例如,除非用户使用依赖于它的函数,否则试图避免使用库。 ,这是个坏主意。)
在你的例子中:
def write_something:
var = name_module.somemethod() # returning a var or it could be a property
import name_module
name_module
在之后 import
之前不存在。
你的第一个例子应该完美 - 这是人们通常会做的事情。