2017-01-07 2 views
-4

Он определяет следующую функцию Python обычно:Trivial Python Отрывок/Error

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()'. Если он возвращает итерабельность, тогда '[1]' обращается ко второму элементу в этом итерабельном. –

ответ

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' 

Legal, но сбивает с толку новых кодеров.

+0

Спасибо! Отличное объяснение. – androidcoder1234