我有以下结构:
app/
test1.py
test/
__init__.py
test2.py
我在test1.py
中导入test2.py
并使用test2.py
函数
代码如下:
test1.py:
import test.test2 as T
T.hello()
...
T.hello1()
test2.py:
d = {}
def hello():
print('hi')
global d
d['1'] = 1
def hello1():
print('hi1')
global d
print(d) # prints{'1': 1}
test1.py
会打电话给hello
,过了一会儿打电话hello1
。我想在hello
中填充dict
d
并在hello1
中使用它。使用global
工作正常,但是有什么更好的方法可以做到这一点,因为我想避免globals
.我不想d
从hello
传递到test1
的caller
,然后从那里传回hello1
.
我该怎么做才能避免globals
.我正在使用python 3.5
.
你可以只使用一个类:
class Whatever(object):
def __init__(self):
self.d = {}
def hello(self):
print('hi')
self.d['1'] = 1
def hello1(self):
print('hi1')
print(self.d)
_Someinstance = Whatever()
hello = _Someinstance.hello
hello1 = _Someinstance.hello1
除了最后三行之外,您还可以在需要的地方创建和使用实例。这些只是为了让它的行为(几乎(像你的原始一样。
请注意,函数也是对象,因此您可以将变量分配给hello
函数:
def hello():
print('hi')
hello.d['1'] = 1
def hello1():
print('hi1')
print(hello.d) # prints{'1': 1}
hello.d = {}