2016-07-14 2 views
0

最近、Python(numpy)のメソッドをコーディングしています。これは、単一の要素または配列の要素ごとのどちらでも操作できます。例えばPythonでオーバーロードされたパラメータの命名規則

ここ

iは単一のインデックス、または記述的にそれが困難な命名なり、それらの配列のいずれかであることができます。

また、より一般的な意味で、非常に異なる意味を持つ可能性があるオーバーロードされたパラメータをどのように名付けなければなりませんか?ここでは(むしろ不自然な)例です:itemflagに応じて、ここでは2つの全く異なるものを表し

def doTheThing(flag, item): 
    if(flag == 0): 
     useOneWay(item) 
    else: 
     useTotallyOtherWay(item) 

場合、それは名前を付ける必要がありますか?

デフォルトで2つの名前付きパラメータを使用する方がよいでしょうか?例えば

def doTheThing(flag, item1=None, item2=None): 

おそらく来るようなシナリオが悪いプログラミング慣行の指標そのものであり、最善の解決策は、それぞれの場合を処理するための異なる方法に再ファクタリングあります。

基本的に、ここに方向性を与えるPythonの命名規則はありますか?私は特にPEP8でパラメータオーバーロードを参照するものは見つかりませんでした。

これをトピックとして残して、敬意を示さないようにするには、あなたの答えにある評判の高い情報源(PEP8またはPythonの他の大きな名前)を参考にしてください。私はしかし、コメントで個人的な意見を聞いて満足しているだろう。

+1

2つのバリエーションがある場合は、名前を付けます。 'carOrCarList'本当に一般的でないかぎり、私は何か 'item'を呼びたくありません。常に最小限のコンテキストで変数に名前を付けます。 3つ以上のバリアントがある場合は、一般的な名前(項目など)を使用して、コメントに何ができるかを記述します。 –

答えて

1

あなたができることはいくつかあります。

def addOne(self, i_or_is): 
    if not isinstance(i_or_is, list): 
     i_or_is = [i_or_is] 
    ... 

をしかし、この場合には、よりよい解決策は、おそらく*argsを取るために、次のようになります:最初のものは、それに応じて変数を命名され

add(1)add(1, 2, 3)あるいは add(*list_)(のように呼び出すことができ
def addOne(self, *list_of_is): 
    ... 

最後の例は、既存のリストを*argsに解凍します)。

異なることを意味する引数がある場合は、実際にそれらを2つの引数に分割し、1つだけを受け入れることができます。標準ライブラリは、logging moduleでこれを行います。

stream - StreamHandlerを初期化するために指定されたストリームを使用します。この引数は 'filename'と互換性がないことに注意してください。両方とも存在する場合は、ValueErrorが発生します。