Одно условие: синтаксический элемент в основе моего Вопроса находится на языке Python; однако этот элемент часто появляется в библиотеке Matplotlib, которая является единственным контекстом, который я видел. Так что, будь то общий вопрос о синтаксисе Python или вопрос по конкретной библиотеке, я не уверен. Что я знаю, так это то, что я не смог найти ничего на месте - ни в Python Language Reference , ни в документации Matplotlib.
Те, кто использует и / или разрабатывает превосходную библиотеку черчения Python, Matplotlib распознает синтаксический паттерн ниже. (
from matplotlib import pyplot as MPL
>>> l, = MPL.plot(s, t) # s & t are ordinary NumPy 1D arrays
Какая конструкция в левой части этого выражения? И,
какова цель его использования?
Я знаком с распаковкой задания в Python , например,
>>> a, b = [100, 200]
Мне также известно, что в Python одноэлементные кортежи иногда представлены как t,
И любой из них может быть ответом на первый вопрос выше; если так, то я пока не понимаю причину, по которой здесь нужен только первый элемент значения, возвращенного из вызова plot .
(примечание: "l" - это строчная буква "ell"; я использую эту букву, потому что ls - это буква, наиболее часто используемая здесь, возможно потому, что она связана с объектом, который начинается с той же буквы, см. Ниже) .
Некоторый дополнительный контекст:
Вызов сюжет возвращает список line2D экземпляров :
>>> type(l)
<class 'matplotlib.lines.Line2D'>
Таким образом, l является объектом типа line2D.
После привязки к объекту lines2D эту «переменную» обычно можно увидеть в коде Matplotlib следующим образом:
>>> l.set_color("orange")
Это выражение изменяет цвет линии, которая представляет значения данных в окне графика («линия графика»)
Ниже приведен еще один пример; он показывает общий сценарий для этой конструкции «переменная-запятая», которая встраивает небольшие виджеты, независимые от набора инструментов и графического интерфейса, в окно графика Matplotlib, например, для включения / выключения с помощью флажка, когда несколько рядов данных появляются в окне графика .
В приведенном ниже коде создается простой график Matplotlib и простой виджет, состоящий из двух флажков, по одному для каждого ряда данных.
10 и 11 снова связаны с вызовами на сюжет ; оба появляются через пару залоговых прав позже, когда их методы get_visible и set_visible вызываются в пользовательской функции, переданной при вызове * on_click *.
from matplotlib.widgets import CheckButtons
ax = plt.subplot(111)
l0, = ax.plot(s, t, visible=False, lw=2)
l1, = ax.plot(t, s1, lw=2)
rax = plt.axes( [.05, .4, .1, .15] )
check = CheckButtons(rax, ('raw', 'transformed'), (False, True))
def fnx(checkbox_label):
if checkbox_label == 'raw':
l0.set_visible(not l0.get_visible())
elif checkbox_label == 'transformed':
l1.set_visible(not l1.get_visible())
check.on_clicked(fnx)
plt.show()