x, = … – является ли эта конечная запятая запятой?

Я не понимаю, что означает запятая после переменных строк, означает: http://matplotlib.org/examples/animation/simple_anim.html

line, = ax.plot(x, np.sin(x)) 

Если я удаляю запятую и переменную «строка», становится переменной «строка», тогда программа прерывается. Полный код из url, приведенный выше:

 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(111) x = np.arange(0, 2*np.pi, 0.01) # x-array line, = ax.plot(x, np.sin(x)) def animate(i): line.set_ydata(np.sin(x+i/10.0)) # update the data return line, #Init only required for blitting to give a clean slate. def init(): line.set_ydata(np.ma.array(x, mask=True)) return line, ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init, interval=25, blit=True) plt.show() 

Согласно http://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences запятая после переменной, похоже, связана с кортежами, содержащими только один элемент.

2 Solutions collect form web for “x, = … – является ли эта конечная запятая запятой?”

ax.plot() возвращает кортеж с одним элементом. Добавив запятую в целевой список назначения, вы попросите Python распаковать возвращаемое значение и назначьте его каждой переменной, названной слева по очереди.

Чаще всего вы видите, что это применяется для функций с более чем одним возвращаемым значением:

 base, ext = os.path.splitext(filename) 

Однако левая сторона может содержать любое количество элементов и при условии, что это кортеж или список переменных, которые будут выполняться при распаковке.

В Python это запятая, которая делает что-то кортеж:

 >>> 1 1 >>> 1, (1,) 

Скобки в большинстве мест являются необязательными. Вы можете переписать исходный код с круглыми скобками, не изменяя значения:

 (line,) = ax.plot(x, np.sin(x)) 

Или вы также можете использовать синтаксис списка:

 [line] = ax.plot(x, np.sin(x)) 

Или вы можете переделать его в строки, которые не используют распаковку кортежей:

 line = ax.plot(x, np.sin(x))[0] 

или

 lines = ax.plot(x, np.sin(x)) def animate(i): lines[0].set_ydata(np.sin(x+i/10.0)) # update the data return lines #Init only required for blitting to give a clean slate. def init(): lines[0].set_ydata(np.ma.array(x, mask=True)) return lines 

Подробную информацию о том, как выполняются задания в отношении распаковки, см. В документации « Заявления о присвоении» .

Если у вас есть

 x, = y 

вы распаковываете список или кортеж длины один. например

 x, = [1] 

приведет к x == 1 , тогда как

 x = [1] 

дает x == [1]

Interesting Posts

Windows 7 64-бит, показывающий 12 ГБ (7,99 ГБ)

Регистрация активности пользователя, телеметрия (и переменные в глобальных обработчиках исключений)

Лучший способ * уверенно * искать файлы и содержимое в Windows без использования службы индексирования?

Преобразование долготы / широты в координату X / Y

Как создать банку для проекта библиотеки Android

Требуется решение для резервного копирования: жесткий диск на NAS через Интернет?

Немедленно создайте инструмент, чтобы его можно было использовать позже в том же запуске CMake

Возможно ли связать домен с моим сервером без DNS?

Можно ли / практично установить и запустить Linux на USB-накопителе?

Сортировка двухмерного массива на основе одного столбца

Заменить разрывы строк в строке C #

Intellisense в IntelliJ больше не работает

Для чего нужны драйверы Windows \ etc \ services?

несколько экземпляров Mongo DB на одном сервере

Как записывать трафик, который находится внутри VPN?

Давайте будем гением компьютера.