The way we do this, is in main.py, call a "globalizer" function in each other
file:
# call globalizers to get shortcuts as global variables
funcs.globalizer(interface, variable_dict)
util.globalizer(interface, variable_dict)
sd.globalizer(interface, variable_dict)
tests.globalizer(interface, variable_dict)
ut.globalizer(interface, variable_dict)
Obviously, you may not need a shared interface in which case you can just pass
the variable dictionary.
In each file, you have a function:
def globalizer(interface, variables_dict):
# create global variables for this .py file for shared interface and the
variables
....
This works well, making sure separate python files shared exactly the same
things we want to be global.
---- Joseph S.
Teledyne Confidential; Commercially Sensitive Business Data
-----Original Message-----
From: Stefan Ram <[email protected]>
Sent: Tuesday, August 30, 2022 1:09 AM
To: [email protected]
Subject: Re: How to make a variable's late binding crosses the module boundary?
dn <[email protected]> writes:
>Build module.py as:
>***
>CONSTANT = 1
>def func():
> pass
>***
>then in the terminal:
>***
>Python 3.9.13 (main, May 18 2022, 00:00:00) [GCC 11.3.1 20220421 (Red
>Hat 11.3.1-2)] on linux Type "help", "copyright", "credits" or
>"license" for more information.
>>>> from module import func as f
In CPython one then can also:
print( f.__globals__[ "CONSTANT" ])
import sys
module = sys.modules[ f.__globals__[ "__name__" ]] print( module.CONSTANT )
CONSTANT = module.CONSTANT print( CONSTANT )
.
--
https://mail.python.org/mailman/listinfo/python-list