パッケージ内のすべてのモジュールをルートレベルのメインアプリケーションからインポートし、Python 3ですぐに使用できるモジュール内の関数を持っていますか?ここでは例のファイルツリーには、次のとおりです。Python3のルートアプリケーションですぐに使用できるパッケージモジュールの機能を作成するには
+app
|- __init__.py
|- main.py
|+ package
|- __init__.py
|- module.py #(contains function1, function2 and function 3)
私は(それは長くて複雑なアプリケーションのためのずさんな取得することができます)main.py内に次のimport文を避けたい:
from package.module import function1, function2, function3
これはいいですなぜなら、それで私はfunction1()
をmain.pyから呼び出すことができるからです。 package.moduleから関数をインポートするだけでは、関数の完全なディレクトリを呼び出してスクリプト内で使用する必要があります(または新しい関数内でエイリアスする)ことを意味します。
import package.module
package.module.function(param)#not fun...too long!
#or like this
def newFunction(param):
'''why create a new function to handle an already existing one?
Bad form and non Pythonic'''
return package.module.function(param)
私は私のパッケージの__init__.py
に__all__ = ["module1", "module2"]
が含まれている場合、私は次の操作を実行しなければならないことを意味:たとえば
from package import * #it is said this is bad form as well
module.function(param)
#I just want the function and don't want to call module also
私の目標は、パッケージやモジュールをインポートして、いっぱい持っていることです関数を使用するたびに明示的にパッケージとモジュールを呼び出す必要なく、モジュール内のすべての関数を使用することができます。
import package.module
function1(x)
私はdocumentation for Python 3 about modules and packagesを読んでいます。思考/助けに感謝します。
これは本当に論理的な@MikeMüllerですが、モジュールとパッケージから多くの関数をインポートすると、インポート文が指数関数的に増加する可能性があります。私は、すべての関数のインポートを処理するためのインポートスクリプトを作成し、次に試みたことはありませんが、単にメインアプリケーションから呼び出すことが可能であると思います。 50以上の輸入がある場合、非常に大きなアプリケーションはどのように処理されますか? – Fergus
必要なものをインポートする必要があります。 '*'やmyメソッドを使用する場合でも、同じ量のimport文が必要です。 –
もう一度@MikeMüllerに感謝します。どのように私のすべてのインポートが含まれているファイルを作成し、単に '__main __。py'アプリケーションから呼び出すことになるでしょうか?これは、メインアプリケーション内のインポートプロセスをクリーンアップするようだ。 – Fergus