UnboundLocalError при использовании + =, но не добавлять список
165 просмотра
2 ответа
Я не совсем понимаю разницу между следующими двумя похожими кодами:
def y(x):
temp=[]
def z(j):
temp.append(j)
z(1)
return temp
звонит y(2)
возвращается[1]
def y(x):
temp=[]
def z(j):
temp+=[j]
z(1)
return temp
звонок y(2)
возвращается UnboundLocalError: local variable 'temp' referenced before assignment
. Почему +
оператор генерирует ошибку? Спасибо
Ответы (2)
9 плюса
Ответьте на заголовок, разница между "+" и "добавлением":
[11, 22] + [33, 44,]
дам тебе:
[11, 22, 33, 44]
а также.
b = [11, 22, 33]
b.append([44, 55, 66])
дам тебе
[11, 22, 33 [44, 55, 66]]
Ответ на ошибку
Это потому, что когда вы делаете присвоение переменной в области, эта переменная становится локальной для этой области и скрывает любую переменную с аналогичным именем во внешней области
Проблема здесь temp+=[j]
равна temp = temp +[j]
. Переменная temp читается здесь до ее назначения. Вот почему это дает эту проблему. Это на самом деле описано в FAQ по питону.
Для дальнейших чтений, нажмите здесь . :)
Автор: Jay Geeth Размещён: 08.12.2015 04:223 плюса
Это UnboundLocalError
происходит потому, что, когда вы делаете присвоение переменной в области, эта переменная автоматически рассматривается Python как локальная для этой области и скрывает любую переменную с аналогичным именем в любой внешней области.
В этой append
функции вы не делаете назначение как таковое , и, следовательно, нет ошибки области действия.
Вопросы из категории :
- python Обработка XML в Python
- python Как я могу использовать Python itertools.groupby ()?
- python Python: На какой ОС я работаю?
- python Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- python Вызов функции модуля с использованием его имени (строки)
- python Звук Питона («Колокол»)
- list Функция транспонирования / распаковки (обратная сторона zip)?
- list How would you make a comma-separated string from a list of strings?
- list Удалить дубликаты из списка <T> в C #
- list Console.WriteLine и общий список
- list Как проверить, если список пуст?
- list Являются ли кортежи более эффективными, чем списки в Python?
- append Разница между методами добавления и добавления в Python
- append Как добавить что-то в массив?
- append Создание элемента div в jQuery
- append Присоединение к ObjectOutputStream
- append Добавить к строковой переменной
- append Дождитесь завершения предыдущего .append ()