在模块函数调用之间存储状态



我有以下结构:

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中填充dictd并在hello1中使用它。使用global工作正常,但是有什么更好的方法可以做到这一点,因为我想避免globals.我不想dhello传递到test1caller,然后从那里传回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 = {}

相关内容

  • 没有找到相关文章

最新更新