私のプログラムの特定のモジュールに対して、インスタンスのリストが返されるかどうかはまったく違いがないことに気づいただけです。固定されたシードでは、結果は同じです。インスタンスのリストを返すことで違いはありませんか?パフォーマンスはどうですか?
したがって、私は知っているしたいと思います:
return文を含める方が良いプログラミングの練習のようです。あれは正しいですか?
私は主にパフォーマンスが心配です。コンピュータで進行中の他のことが結果に影響を与えているように見えるので、私はそれをタイミングづけするのが難しいです。私は4分3秒を得て、次に1つのカンマを変えずに5分を得る。
別のモジュールから呼び出されて別のインスタンスを含むリストの多くは、オブジェクトを通過する大きな機能があります:
def check_demographics(month, my_agents, families, firms, my_graveyard, year, mortality_men, mortality_women, fertility, state_id):
私が持っている機能の中には、次の関数:
def mortal(my_agents, my_graveyard, families, agent, firms):
my_agents.remove(agent)
my_graveyard.append(agent)
families[agent.get_family_id()].death_member(agent)
if families[agent.get_family_id()].num_members() == 0:
families[agent.get_family_id()].empty_house()
if agent.is_employed():
firms[agent.get_workplace()].obit(agent)
return my_agents, families, firms, my_graveyard
上記のケースでは、戻り値がopであることがわかりました。エージェント、ファミリなどを含むリストを返すことに違いはありません。
この例は再現性がありませんが、問題は一般的な事実に関連しています。
私はリストがメモリのどこかにあると仮定しています。
p.s.私はコンピュータ科学者ではなく、エージェントベースのモデリングを試みている研究者です。ありがとう!
あなたの質問は何ですか?リストを返す必要がないのは、すべての操作がインプレース操作であるからです。あなたがあなたのリストにREFERENCEを渡しているので、それらのインプレース操作はリスト自体で行われ、あなたが渡した同じ参照が影響を受けるでしょう。 –
質問は:それがオプションの場合、私はリターンを必要としない、そうですか?第二に、どちらの方法がより早いか(返品の有無にかかわらず)。ありがとう。 –
pythonによって返されるものは、それらのオブジェクトへの参照のタプルです。より多くの参照を介して機能する関数全体のオーバーヘッドと比較すると、それは単純に無視できます。 'return'を持つかどうかは、あなたの関数がするはずの問題です。一般的に、pythonは、これを強調するためにインプレースで変更された入力を返さないようにします。ところで、あなたのコードを*時間にするべきではありません。 – MisterMiyagi