2012-12-15 48 views

Trả lời

10

Biến thể đầu tiên trả về một tuple-yếu tố duy nhất:

In [13]: crc = struct.unpack('>i', '0000') 

In [14]: crc 
Out[14]: (808464432,) 

Để có được giá trị, bạn phải viết crc[0].

Các biến thể thứ hai giải nén các tuple, cho phép bạn viết crc thay vì crc[0]:

In [15]: (crc,) = struct.unpack('>i', '0000') 

In [16]: crc 
Out[16]: 808464432 
0

Dấu phẩy cho biết crc là một phần của bộ tuple. (Thật thú vị, đó là dấu phẩy (s), không phải dấu ngoặc đơn, chỉ ra các bộ dữ liệu bằng Python.) (crc,) là một bộ tuple có một phần tử.

crc = struct.unpack('>i', data) 

làm crc một bộ tuple.

(crc,) = struct.unpack('>i', data) 

gán giá trị của phần tử đầu tiên (và duy nhất) vào bộ.

0

(crc,) được coi là một one-tuple.

2

phương thức unpack trả về một bộ giá trị. Với cú pháp bạn mô tả, bạn có thể tải trực tiếp giá trị đầu tiên của tuple vào biến crc trong khi ví dụ đầu tiên có tham chiếu đến toàn bộ tuple và bạn sẽ phải truy cập giá trị đầu tiên bằng cách viết crc[1] sau trong tập lệnh. Vì vậy, về cơ bản nếu bạn chỉ muốn sử dụng một trong các giá trị trả về, bạn có thể sử dụng phương pháp này để tải trực tiếp nó trong một biến.

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