Я объявляю глобальный список, и как часть определения элемента списка, мне нужно сослаться на некоторые неясные данные из других модулей. Я хотел бы объявить несколько простых кратких ссылок на эти внешние переменные непосредственно перед объявлением списка, но я не хочу, чтобы эти ссылочные переменные стали глобальными переменными.
Возможно, все это звучит очень запутанно, поэтому здесьэто пример:
prj = book.OverrideLevel.PROJECT
ent = book.OverrideLevel.ENTITY
elm = book.OverrideLevel.ELEMENT
list = [OvrType( 3, prj, "OutTypes" ),
OvrType( 4, prj, "FilePrefix" ),
OvrType( 5, ent, "FileSuffix" ),
OvrType( 6, ent, "World" ),
OvrType( 7, ent, "Anim" ),
OvrType( 8, ent, "Armature" ),
OvrType( 9, ent, "MeshData" ),
OvrType( 10, elm, "General" ),
OvrType( 11, elm, "ObjPrefix" ),
OvrType( 12, elm, "ObjSuffix" ) ]
В этом примере я хочу избежать определения любых глобальных переменных, кроме list
. Поскольку это происходит в глобальной области видимости, prj
, ent
и elm
также станут глобальными переменными. Есть ли способ избежать этого в Python? Возможно, определив список как пустой (list = []
), затем создав область +1 и определив содержимое списка там? Я просто не уверен, как это сделать.
Одна вещь, которую я рассмотрел, - это создать функцию, а затем немедленно вызвать ее:
list = []
def BuildList():
prj = book.OverrideLevel.PROJECT
ent = book.OverrideLevel.ENTITY
elm = book.OverrideLevel.ELEMENT
global list
list = [OvrType( 3, prj, "OutTypes" ),
.... ]
BuildList()
Был бы лучший способ? Я знаю, что некоторые языки позволяют вам добавлять области вручную по любой причине. Но так как Python очень текстовый (интервал = область действия), я не был уверен, что что-то подобное будет разрешено.
Я ценю любые советы