私は大きなモノロシックPythonファイルを6つの別々のサブモジュールに分割しています。
もともとonebigfile.pyで、私は持っていました
conn = MySqldb.connect()
c = conn.cursor()
そして、関数はそれを次のように使用します。
def getFromDB():
c.execute(sql)
これで、モジュールを次のように再構築しました。
NewModule/
__init__.py
users.py
accounts.py
sixmoreofthese.py
私が困惑しているのは、MySQL接続のような半希少なリソースをどうするかです。
親の名前空間にアクセスする方法はありますconn.
か?MySQLへの多数の接続をインスタンス化したくありません。それらをそこにダンプして、グローバル名前空間の一部であるかのように呼び出すだけでは機能しません。つまり、次のようになります。c.
__init__.py
__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.
1つの提案を予測するには、これらのファイルを分割するのが理にかなっています。およそ50〜75k相当のPythonと、コードを操作する必要のある人々のグループに加えて、機能のかなり明確な概念的なグループがあります。