我想知道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,)
中都省略括号,但为了清晰起见,我保留了它们。x,,,=(1,2,3,4)
? - Thomas Wellerx,_,_,_ =(1,2,3,4)
,其中“_”是常规变量名称,通常用于表示“不关心此值”。无论如何,在这种情况下,我认为x = foo [0]
更清晰易懂。 - Stefano SanfilippoPython允许你在赋值语句的左侧放置元组。问题中的代码就是一个例子,它看起来像是这种操作符的特殊情况,但实际上只是进行了一次元组赋值。以下是一些示例:
a, b = (1, 2)
这将给您 a = 1
和 b = 2
。
现在还有一个单元素元组的概念。
x = (3,)
给你x=(3,)
,这是一个只包含一个元素的元组。这个语法看起来有点奇怪,但是Python需要区分普通括号,所以它在末尾添加了逗号(例如z=(4)
会将z赋值为整数4,而不是元组)。如果你想要提取这个元素,那么你可以使用问题中提到的方法:
y, = x
现在y
等于3。请注意,这只是元组赋值,语法看起来有些奇怪,因为这是长度为一的元组。
参见此脚本示例:http://ideone.com/qroNcx
,
,可以将其放入一个只包含单个元素的元组中。然后,这个元组被赋予从ax01.plot(t,yp1,'b-')
返回的值(使用=
运算符)。
(plot1,) = ...
或者[plot1] = ...
。 - Veedrac