Python代码。 它是逗号运算符吗?

我不明白什么逗号后面的variables行,意思是: http : //matplotlib.org/examples/animation/simple_anim.html

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

如果我删除逗号和variables“行”,变成“行”variables,那么程序被破坏。 上面给出的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-sequencesvariables后面的逗号似乎与只包含一个元素的元组相关。

ax.plot()返回一个元素的元组 。 通过在赋值目标列表中添加逗号,可以让Python解开返回值,并依次将其分配给每个左侧命名的variables。

大多数情况下,你会发现这被应用于具有多个返回值的函数:

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

但是,左侧可以包含任意数量的元素,并且提供它是一个元组或variables列表。

在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 

你打开一个长度为1的列表或元组。 例如

 x, = [1] 

会导致x == 1 ,而

 x = [1] 

x == [1]