I am declaring a global list, and as part of the list element definition, I need to reference some obscure data from other modules. I would like to declare some simple short-hand references to these external variables right before declaring the list, but I don't want these reference variables to become global variables.
This all probably sounds very confusing, so here is an example:
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" ) ]
In the example, I want to avoid defining any globals other than list
. Since this is happening in the global scope, prj
, ent
, and elm
will also become global variables. Is there any way to avoid this in Python? Perhaps by defining the list as empty (list = []
), then creating a +1 scope, and defining the list contents there? I'm just not sure how to do this.
One thing I've considered is to create a function, then call it immediately:
list = []
def BuildList():
prj = book.OverrideLevel.PROJECT
ent = book.OverrideLevel.ENTITY
elm = book.OverrideLevel.ELEMENT
global list
list = [OvrType( 3, prj, "OutTypes" ),
.... ]
BuildList()
Would there be a better way? I know some languages allow you to add scopes manually for any reason needed. But since Python is so text-driven (spacing=scope), I wasn't sure if something like that would be permitted.
I appreciate any advice