我正在写一个程序。它变得太大,无法很好地管理:它有很多与GUI功能(PyQt5)相关的代码,将近2000行。我知道在Python中,完全在一个文件中编写大型脚本是可以接受的,但是编写这个程序变得难以管理。我不能轻易地将代码组织在一个文件中。我以前尝试过将它分割成多个文件(使用我在StackOverflow上找到的方法),但没有效果。我终于意识到我可能要为我的处境做些什么。(我知道事实上,您从未将以下内容拆分为两个文件,但我将其用作示例。)下面是一个将脚本拆分为两个文件(文件1)的非常简单的示例:
# TestProg.py
class Name:
def __init__(self, name):
self.name = name
def testfunc():
nm.name += nm.name[int(len(nm.name)/2):] # Add to name, second half of name
return nm.name
if __name__ == '__main__':
import TestModule
print(TestModule.returnName(TestModule.nm))
input()
文件2:
# TestModule.py
import TestProg
Name = TestProg.Name
testfunc = TestProg.testfunc
nm = Name('Henry')
def returnName(name):
return name.name[::-1] + testfunc()
如果你试着运行这个,它就不起作用了。我最终发现这是因为testfunc
是在TestProg
中定义的,并且使用了一个全局变量(在TestProg
中没有定义)。要解决这个问题,必须用testfunc.__globals__['nm'] = nm
修改testfunc
的globals dict,并在定义nm
之后将其放入TestModule
。你知道吗
我知道这不是一件好事,但这似乎是我能想到的最好的办法。现在,我知道,“只需为testfunc
使用一个局部变量/参数,而不是全局变量。”问题是,它是一个全局变量(需要在与split中的函数分开的文件中定义)。我不想每次都要将变量传递给函数,这非常单调、重复,而且浪费时间。我的问题是:有没有更好的方法?我想不会。第二个问题是:这种方法可以接受吗?它是否被认为是黑客攻击/非常不友好,因此使用它是不明智的?你知道吗
请记住,我真的需要文件被分割,但我真的不能比需要这种方法工作的分割更好(据我所知)。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐