Подтвердить что ты не робот

Что означает, = означает в python?

Интересно, что означает ,= или , = в python?

Пример из matplotlib:

plot1, = ax01.plot(t,yp1,'b-')
4b9b3361

Ответ 1

Это форма распаковки кортежа. С круглыми скобками:

(plot1,) = ax01.plot(t,yp1,'b-')

ax01.plot() возвращает кортеж, содержащий один элемент, и этот элемент присваивается plot1. Без этой запятой (и, возможно, круглых скобок) plot1 был бы назначен весь набор. Обратите внимание на разницу между a и b в следующем примере:

>>> def foo():
...     return (1,)
... 
>>> (a,) = foo()
>>> b = foo()
>>> a
1
>>> b
(1,)

Вы можете опустить скобки как в (a,), так и (1,), я оставил их для ясности.

Ответ 2

Python позволяет поместить кортежи в левой части задания. Код в вопросе является примером этого, он может выглядеть как особый случай оператора, но это действительно просто назначение кортежей для случая, происходящее здесь. Некоторые примеры могут помочь:

a, b = (1, 2)

который дает вам a = 1 и b = 2.

Теперь существует и понятие одного элемента.

x = (3,)

дает вам x = (3,), который является кортежем с одним элементом, синтаксис выглядит немного странно, но Python должен отличать от простой круглой скобки, поэтому он имеет конечную запятую для этого (например, z=(4) делает z целым числом 4, а не кортеж). Если вы хотите сейчас извлечь этот элемент, тогда вы бы хотели использовать что-то вроде вопроса в вашем вопросе:

y, = x

теперь y равно 3. Обратите внимание, что это просто назначение кортежей здесь, синтаксис просто немного странный, потому что это кортеж длины один.

См. этот script для примера: http://ideone.com/qroNcx

Ответ 3

Добавление , после того, как переменная помещает его в кортеж с одним элементом. Затем этому кортежу присваивается значение (с оператором =), возвращаемое из ax01.plot(t,yp1,'b-').