Интересно, что ,=
или , =
означает в python?Что значит, = означает в python?
Пример из Matplotlib:
plot1, = ax01.plot(t,yp1,'b-')
Интересно, что ,=
или , =
означает в python?Что значит, = означает в python?
Пример из Matplotlib:
plot1, = ax01.plot(t,yp1,'b-')
Это форма кортежа распаковке. С скобками:
(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,)
, я оставил их ради ясности.
Это похоже на версию. Чтобы быть точным, можно упомянуть, что это невозможно, например. в Python 2.7 («ValueError: слишком много значений для распаковки»). Кроме того: почему я не могу «x ,,, = (1,2,3,4)»? –
@ThomasWeller 1) приведенный выше пример работает в Python 2.7, эта ошибка означает, что кортеж, который вы пытаетесь распаковать, больше, чем количество переменных, предоставленных в lhs. 2) вы не можете, потому что это недопустимый синтаксис. Если вы хотите сохранить только первый элемент, тогда сделайте 'x, _, _, _ = (1,2,3,4)', где '_' является регулярным именем переменной, обычно используемым для сигнала _ don не заботьтесь об этом значении "_. В любом случае, я думаю, что 'x = foo [0]' в этом случае более ясный. –
@StefanoSanfilippo в python 3 вы можете сделать ['x, * _ = (1,2,3,4)'] (https: //asmeurer.github.-й/python3-презентация/slides.html # 8) – Pureferret
Добавление переменной ,
после того, как переменная помещает ее в кортеж с одним элементом. Затем этому кортежу присваивается значение (с оператором =
), возвращенным с ax01.plot(t,yp1,'b-')
.
Python позволяет поместить кортежи в левой части задания. Код в вопросе является примером этого, может показаться, что это особый случай оператора, но это действительно просто назначение кортежей для случая, которое происходит здесь. Некоторые примеры могут помочь:
a, b = (1, 2)
который дает a = 1
и b = 2
.
Теперь есть концепция кортежа одного элемента.
x = (3,)
дает x = (3,)
, который является кортежем с одним элементом, синтаксис выглядит немного странно, но Python необходимо дифференцировать от простой скобки, так что имеет Запятую для этого (например z=(4)
делает г быть целым числом 4, а не кортеж). Если вы хотите извлечь в настоящее время этот элемент, то вы хотели бы использовать что-то, как у вас в вопросе:
y, = x
Теперь y
есть 3. Обратите внимание, что это только кортеж присваивание здесь, синтаксис просто кажется немного странным потому что это кортеж длины один.
Смотрите этот сценарий для примера: http://ideone.com/qroNcx
@ArnabDatta Нет уа не может»; это будет 2-кортеж. Однако вы можете написать '(plot1,) = ...' или '[plot1] = ...'. – Veedrac