2013-06-11 37 views
5

Tôi đang mạo hiểm vào python và tôi có câu hỏi liên quan đến dấu hoa thị. Tôi biết rằng chúng được sử dụng cho các đối số trong các cuộc gọi chức năng nhưng tôi đã nhìn thấy đoạn mã sử dụng chúng ngoài thẻ chức năng (nói ví dụ, trong một tuple 5 lớp, giải nén chúng vào các biến như:Dấu hoa thị bên ngoài các cuộc gọi hàm

first, *middle, last = grades

Bất cứ khi nào tôi cố gắng sử dụng dấu hoa thị trong bối cảnh này/bối cảnh ra khỏi tranh luận một chức năng gọi của, tôi nhận được cú pháp không hợp lệ trong thông dịch viên. tôi có thiếu cái gì ở đây?

Trả lời

10

Python 3 thêm tuple mở rộng giải nén với sự hỗ trợ cho một ký tự đại diện, xem PEP 3132:

*start, tail = ... 
head, *middle, tail = ... 

Xem tài liệu assignment statements tham khảo:

Nếu danh sách mục tiêu chứa một mục tiêu bắt đầu bằng một dấu sao, được gọi là “đóng vai chính” mục tiêu: Đối tượng phải là một chuỗi với ít nhất là nhiều mặt hàng như có là các mục tiêu trong danh sách đích, trừ một mục tiêu. Các mục đầu tiên của chuỗi được chỉ định, từ trái sang phải, đến các mục tiêu trước mục tiêu được gắn dấu sao. Các mục cuối cùng của chuỗi được gán cho các mục tiêu sau mục tiêu được gắn dấu sao. Danh sách các mục còn lại trong chuỗi sau đó được gán cho mục tiêu được gắn dấu sao (danh sách có thể trống).

Sử dụng dấu sao ở phía bên trái (danh sách đích) của bài tập là lỗi cú pháp trong Python 2.

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