Câu hỏi này bắt nguồn từ PEP 448
-- Additional Unpacking Generalizations và có trong Python 3.5 theo như tôi biết (và không được chuyển về 2.x
). Cụ thể, trong phần Nhược, sau đây được ghi nhận:Nhà điều hành * sao ở bên trái và bên phải của tuyên bố bài tập
Trong khi
*elements, = iterable
nguyên nhânelements
là mộtlist
,elements = *iterable
, gâyelements
là mộttuple
. Lý do cho điều này có thể gây nhầm lẫn cho những người không quen với cấu trúc.
Mà không thực sự giữ, cho iterable = [1, 2, 3, 4]
, trường hợp đầu tiên mang lại một list
:
>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
Trong khi đối với trường hợp thứ hai một tuple
được tạo ra:
>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
Là quen với khái niệm , Tôi bị bối rối. Bất cứ ai có thể giải thích hành vi này? Biểu hiện có gắn dấu sao có hoạt động khác nhau tùy thuộc vào bên cạnh nó không?