2012-05-02 33 views
12

Tôi đang cố gắng tạo một bản đồ hoạt hình. Dưới đây là một mã ví dụ:line, = plot (x, sin (x)) dấu phẩy là gì?

from pylab import * 
import time 

ion() 

tstart = time.time()    # for profiling 
x = arange(0,2*pi,0.01)   # x-array 
line, = plot(x,sin(x)) 
for i in arange(1,200): 
    line.set_ydata(sin(x+i/10.0)) # update the data 
    draw()       # redraw the canvas 

print 'FPS:' , 200/(time.time()-tstart) 

Tôi không hiểu line,. Không có dấu phẩy, mã không hoạt động.

+3

bản sao có thể có của [Một phần tử cú pháp Python bất thường thường được sử dụng trong Matplotlib] (http://stackoverflow.com/questions/9731779/an-unusual-python-syntax-element-frequently-used-in-matplotlib) –

Trả lời

16

Dấu phẩy là cú pháp Python biểu thị một bộ phần tử đơn. Ví dụ:

>>> tuple([1]) 
(1,) 

Trong trường hợp này, nó được sử dụng cho lập luận giải nén: plot trả về một danh sách phần tử duy nhất, đó là giải nén vào line:

>>> x, y = [1, 2] 
>>> x 
1 
>>> y 
2 
>>> z, = [3] 
>>> z 
3 

Một thay thế, có lẽ cách dễ đọc hơn làm đây là sử dụng cú pháp giống như danh sách:

>>> [z] = [4] 
>>> z 
4 

mặc dù z, = phổ biến hơn trong mã Python.

+6

Chỉ cần outsped tôi, 1, nhưng tôi không đồng ý rằng một cách dễ đọc hơn để làm điều này là sử dụng cú pháp danh sách, tôi sẽ sử dụng nó thay vào đó: 'line = plot (x, sin (x)) [0]'. – orlp

+0

Hoặc thậm chí cú pháp giống như tuple: '(z) = [4]' :) – ovgolovin

+2

@nightcracker: Đánh chỉ mục với '[0]' không tương đương với giải nén, vì nó không kiểm tra xem số phần tử trong giá trị trả về của 'lô' khớp với số biến được gán cho. –

Các vấn đề liên quan