琐碎的Python代码段/错误

时间:2017-01-07 19:05:46

标签: python python-2.7 python-3.x

他通常定义以下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文献中的任何地方找到答案。

1 个答案:

答案 0 :(得分:4)

[1]subscription expressionfindMax()会返回列表[1]会从该序列中选择一个元素,即索引为1的元素。

当您删除[1]表达式时,稍后会在需要不同类型对象的代码时获得TypeError,但现在会给出该列表。

也许您发现)来电的findMax()[1]混淆之间的空格。忽略那个空间要好得多,而且Python style guide状态不应该在那里使用空格,但空格在那里完全合法:

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

合法,但对新编码人员感到困惑。