2016-03-27 5 views
0

2種類の引数で呼び出すことができる関数のPythonのベストプラクティスは何ですか? 2つの異なる方法で呼び出すことができる関数のPythonのベストプラクティス

は一例として、私は radius引数を取り、半径内のすべてのポイントでフィットまたはカスタム regionにすべての点で region引数とフィット感を取ることができ機能 run_fitを持っています。

radiusregionをキーワード引数にする必要がありますか?正確に1つは常に必要ですか?

私の質問をするもう1つの方法は、どちらの引数も必要ではないが少なくとも1つを提供しなければならないという事実を捉える方法はありますか?

+0

おそらく2つの引数を取ることができます.1つは渡している引数で、もう1つは渡している引数のブール代数です。 – Natecat

答えて

1

はい、キーワードargsを使用して、引数の正しい組み合わせが確実に渡されるようにするためにassertionsを使用してください。

def run_fit(radius=None, region=None): 
    if not radius and not region: 
     raise AssertionError("Supply either radius or region") 
    if radius and region: 
     raise AssertionError("Only supply one of radius and region") 

また、直接、アサーションを書くことができます:

assert radius or region, "Supply either radius or region" 
assert not (radius and region), "Only supply one of radius or region" 

を個人的に、私は最初のバージョンは、より読みやすいと思います。

0

この質問はPythonプログラミングのためだけではなく、どのプログラミングにも適用できます。ある関数が半径を当てはめ、領域をフィッティングするような2つの異なることをしている場合、関数を2つの異なる関数に分割し、run_fitのような一般名の代わりにfit_raidusとfit_regionのような意味のある名前を付ける方が良いです。

関連する問題