2015-09-05 16 views
6

người gửi this interesting formulation, và tôi đã cố gắng nó ra trong một Python 3 console:`{...}` có nghĩa là gì trong kết quả in của biến python?

>>> (a, b) = a[b] = {}, 5 
>>> a 
{5: ({...}, 5)} 

Trong khi có rất nhiều để giải nén ở đây, những gì tôi không hiểu (và ngữ nghĩa của công thức nhân vật thú vị dường như đặc biệt khó khăn để tìm kiếm) là những gì các {...} có nghĩa là trong bối cảnh này? Thay đổi trên một chút:

>>> (a, b) = a[b] = {'x':1}, 5 
>>> a 
{5: ({...}, 5), 'x': 1} 

Đó là đầu ra thứ hai này mà thực sự baffles tôi: Tôi dự kiến ​​sẽ có các {...} đã bị thay đổi, nhưng gần nhất của tôi đoán, 5 ngụ ý một tuple nơi đầu tiên yếu tố nào đó không xác định? Và đó là ý nghĩa của {...}? Nếu vậy, đây là loại danh mục mới cho tôi bằng Python và tôi muốn có tên cho nó để tôi có thể tìm hiểu thêm.

+0

Nó được gọi là "dấu ba chấm", vui lòng xem [tại đây] (https://stackoverflow.com/questions/772124/what-does-the-python-ellipsis-object-do) và [tại đây] (https: //stackoverflow.com/questions/101268/hidden-features-of-python/112316#112316) – CoryKramer

+2

điều này không liên quan gì đến đối tượng hình elip của python – Eevee

Trả lời

12

Đó là dấu hiệu cho thấy dict recurses, tức là chứa chính nó. Một ví dụ đơn giản hơn nhiều:

>>> a = [] 
>>> a.append(a) 
>>> a 
[[...]] 

Đây là danh sách chỉ có phần tử riêng. Rõ ràng repr không thể được in theo nghĩa đen, hoặc nó sẽ vô cùng dài; thay vào đó, các loại nội trang thông báo khi điều này xảy ra và sử dụng ... để cho biết tự ngăn chặn.

Vì vậy, nó không phải là một loại giá trị đặc biệt, chỉ sử dụng tiếng Anh thông thường "..." có nghĩa là "một cái gì đó đã bị bỏ qua ở đây", cộng với niềng răng để chỉ ra phần bỏ qua là một dict. Bạn cũng có thể nhìn thấy nó với dấu ngoặc cho một danh sách, như trình bày ở trên, hoặc thỉnh thoảng có dấu ngoặc đơn cho một tuple:

>>> b = [], 
>>> b[0].append(b) 
>>> b 
([(...)],) 

Python 3 cung cấp một số công cụ để bạn có thể làm điều này với các đối tượng của riêng mình, theo hình thức reprlib .

+0

Hấp dẫn! Cảm ơn bạn đã phản hồi mạnh mẽ !!! –

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