Импорт Blender Python вне области действия в def
В 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')
Это работает, но почему импорт выходит за рамки - я думал, что с помощью импорта у меня будет доступ к нему?
1 ответ
Проблема в том, что Python import
s сделаны во время выполнения. Это значит, когда ты import
вы просто привязываете модуль к переменной, которую затем можете использовать.
Внутри функции это просто связывает модуль с локальной переменной в этой функции (что обычно считается действительно плохой идеей. Если, например, вы не пытаетесь избежать необходимости в библиотеке, если пользователь не использует функции, зависящие от нее, это плохая идея).
В вашем примере:
def write_something:
var = name_module.somemethod() # returning a var or it could be a property
import name_module
name_module
не существует, пока после вас import
Это.
Ваш первый пример должен работать отлично - это то, что обычно делают.