chúng tôi chỉ đơn giản là có thể sử dụng:dấu phẩy có nghĩa gì trong giải nén của python?
crc = struct.unpack('>i', data)
tại sao mọi người như thế này:
(crc,) = struct.unpack('>i', data)
gì dấu phẩy nghĩa là gì?
chúng tôi chỉ đơn giản là có thể sử dụng:dấu phẩy có nghĩa gì trong giải nén của python?
crc = struct.unpack('>i', data)
tại sao mọi người như thế này:
(crc,) = struct.unpack('>i', data)
gì dấu phẩy nghĩa là gì?
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
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ộ.
(crc,)
được coi là một one-tuple.
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.