2017-06-16 9 views
0

私はPythonでDEAPパッケージを使い始めました。チュートリアルの後、私はこの文を理解することはできません。Python DEAPパッケージでは、なぜこのような機能を持たないモジュールから関数を呼び出すことができますか?

toolbox.register("cross",tools.cxTwoPoint) 

私はtools.cxTwoPointcxTwoPoint関数を呼び出すことであることを理解しています。しかし、私はソースコードを確認しましたが、cxTwoPoint関数はtoolsモジュール内になく、crossover.pyの中で定義された関数です。また、tools.pyにはcrossover.pyまたはcxTwoPointに関する声明は見つかりませんでした。

誰かが私を助けることができますか?とても感謝しています!!!

+0

deap.tools.mutationにあります。 deap.tools名前空間にimportetを取得します。 (https://github.com/DEAP/deap/blob/master/deap/tools/mutation.py) – Ohjeah

+0

あなたの情報をありがとう。またベンチマークフォルダに 'tools.py 'があるのも不思議です。 – zdeng

答えて

0

tools.pyはアルゴリズムのベンチマークに使用されます。 __init__.pyからわかるように、crossoverモジュール内のすべての関数をインポートすることを意味する文from .crossover import *があります。このディレクトリには、__init__.pyと同じディレクトリがあります。これにより、他のファイルでこれらの関数に簡単にアクセスできます。そして、__init__.pyは、パッケージを含むディレクトリをPythonのディレクトリにするには、What is __init__.py for?と答えてください。

関連する問題