我将一个大型的单体 python 文件分解为六个单独的子模块。
最初在 onebigfile.py 中,我有
conn = MySqldb.connect()
c = conn.cursor()
然后一个函数会这样使用它:
def getFromDB():
c.execute(sql)
现在,我已经将我的模块重组为
NewModule/
__init__.py
users.py
accounts.py
sixmoreofthese.py
我困惑的是如何处理像我的 MySQL 连接这样的半稀缺资源。
有没有办法访问父命名空间,例如conn.
并且c.
可以放入__init__.py
?我不想实例化一大堆与 MySQL 的连接。只是将它们转储到那里并像它们是全局命名空间的一部分一样调用它们是行不通的。那是:
__init__.py:
conn = MySqldb.connect()
c = conn.cursor()
> import NewModule
> NewModule.users.login('a','b')
--- login function calls the Mysql c. from the global namespace and can't find it.
预测一个建议:拆分这些文件是有意义的——大约有 50-75k 的 python,以及需要使用代码的一群人,此外还有非常清晰的功能概念分组。