我有 2 个导入相同模块的应用程序文件:
#app1.py
import settings as s
another code
#app2.py
import settings as s
another code
如果运行第一个或第二个应用程序,我需要在模块中检查:
#settings.py
#pseudocode
if running app1.py:
print ('app1')
elif:
print ('app2')
我检查模块 inspect但不知道。
此外,我对所有更好的解决方案持开放态度。
编辑:我觉得有点傻(我想这很容易)
我尝试:
var = None
def foo(a):
var = a
print (var)
但仍然无。
请您参考如下方法:
我不确定进口商是否有可能知道是谁进口的。即使是这样,对我来说也像是代码的味道。
相反,您可以将决定由 app1 和 app2 执行,而不是让 settings做出那个决定。
例如:
settings.py
def foo(value):
if value == 'app1':
# do something
else:
# do something else
app1.py
from settings import foo
foo('app1')
等等。
在函数内分配并让它反射(reflect)在全局变量上。示例:
A.py
var = None
def foo(a):
global var
var = a
def print_var():
print(var)
测试.py
import A
A.print_var()
A.foo(123)
A.print_var()
输出:
None
123
请注意,一般不建议将 global 作为编程习惯,因此请尽可能少地使用它们。
