私は多くのパッケージを含むPython(Flask)プロジェクトを持っており、各パッケージはFlaskの青写真です。現在、私は1つのパッケージに項目のリスト(フックされている)を返す関数を持っています。この関数は別のパッケージで呼び出されます(トリガーされます)。このプロジェクトでは、フックとトリガを使用してさまざまなパッケージ間の通信が行われ、プロジェクトの初回起動時にはすべてがメモリにロードされます。この場合ジェネレータを使用することは可能ですか?もしそうなら、この特定のケースではリストではなくジェネレータを使うことが望ましいでしょうか?前もって感謝します!2つのpythonパッケージの間でジェネレータを使用できますか?
これは私が持っているものの単純化された例です。この場合、function1を発電機にすることは可能ですか?
package1.module1:
def function1():
# some_list might be retrieved from a database
retrun some_list
package2.module2:
from package1.module1 import function1
def func1():
list_from_module_one = function1()
# do something with the result
# Here I have 2 cases, I can either return "list_from_module_one" as it is
# or do something with each item of this list and then return something that is
# not directly related to this list
return some_data
def func2():
# Second function that calls function1 from package1
list_from_module_one = function1()
# do something with the result
return some_data
ここでジェネレータを使用できます。それはあまり役に立たないでしょう。答えが言うように、あなたがしていることを詳しく教えてください。 'function1()'はyieldを使用しなければならないので、今のようにリストとして格納するのではなく関数を反復する必要があります。 –
@JoeDohertyは、私がpackage2の関数で同じデータ(function1の結果)を返したい場合でもfunction1をジェネレータにすることができるということですか?この場合、何が最善のことでしょうか? – ettanany
私はそれがあなたが何をしているのかは分かりません。この関数はリストの代わりにジェネレータを返しますが、それを反復することができます。 https://gist.github.com/docapotamus/896192c5eed7d85854344c436f4806b8 –