2017-01-07 11 views
-4

彼は通常、次のPythonの関数を定義しています些細なPythonのスニペット/エラー

def findMax (team, board, MIN, MAX, levels) 
    ... 
    ... 
    return 

彼のプログラムでは、彼はこのようにそれを呼び出す:

myValue = findMax(team, board, MIN, MAX, 3) [1] 

、それが正常に動作します。しかし、私は括弧1を削除して、このようにそれを呼び出す場合:

myValue = findMax(team, board, MIN, MAX, 3) 

を、それは、このエラーがスローされます。

TypeError: list indices must be integers or slices, not tuple. 

私の質問はこれです:括弧1には、何をしているのですか?私は呼び出された関数の引数の後に括弧で囲まれた数字を見たことがなく、Pythonの文献のどこにでも答えが見つかりません。

+0

'findMax'の本体を省略しました。それはリストを返しますか? – usr2564301

+0

これは、 'findMax()'が返すものに依存します。 iterableを返す場合、 '[1]'はそのiterableの2番目の項目にアクセスしています。 –

答えて

4

[1]は、subscription expressionです。 findMax()リストを返し、[1]は、その配列からの1個の要素、あなたは[1]表現を削除すると、あなたはTypeError後でコードオブジェクトの異なるタイプのを期待しているときに取得1.

インデックスを持つものを選び出ししかし、代わりにそのリストが与えられます。

findMax()コールの)と、[1]の間のスペースが混乱している可能性があります。そのスペースを残すためにはるかに優れている、とPython style guide状態にスペースが使用されるべきではないが、スペースが完全に合法です:

>>> l = ['foo', 'bar'] 
>>> l[1] 
'bar' 
>>> l [1] 
'bar' 
>>> l    [1] 
'bar' 

法律が、新しいコーダーに混乱。

+0

ありがとう!素晴らしい説明。 – androidcoder1234

関連する問題