他通常定义以下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 :(得分:4)
[1]
是subscription expression。 findMax()
会返回列表,[1]
会从该序列中选择一个元素,即索引为1的元素。
当您删除[1]
表达式时,稍后会在需要不同类型对象的代码时获得TypeError
,但现在会给出该列表。
也许您发现)
来电的findMax()
和[1]
混淆之间的空格。忽略那个空间要好得多,而且Python style guide状态不应该在那里使用空格,但空格在那里完全合法:
>>> l = ['foo', 'bar']
>>> l[1]
'bar'
>>> l [1]
'bar'
>>> l [1]
'bar'
合法,但对新编码人员感到困惑。