Xét đoạn mã sau:lisp kiểu phong cách 'let` cú pháp trong Python danh sách-comprehensions
>>> colprint([
(name, versions[name][0].summary or '')
for name in sorted(versions.keys())
])
gì mã này, không có gì để in các yếu tố của từ điển versions
thứ tự tăng dần của keys
của nó, nhưng kể từ khi value
là một danh sách được sắp xếp khác, chỉ bản tóm tắt của thành phần đầu tiên ('tối đa') được in.
Kể từ khi tôi quen với let
từ lisp, tôi viết lại trên như:
>>> colprint([
(name, package.summary or '')
for name in sorted(versions.keys())
for package in [versions[name][0]]
)]
Bạn có nghĩ rằng điều này vi phạm being Pythonic? Nó có thể được cải thiện không?
Lưu ý: Đối với người tò mò, colprint
được định nghĩa here.
Heh. Cố gắng lispy là _always_ unpythonic. Python cố gắng không được lispy cứng như nó có thể. – Svante
Thật khó để nói được Parsel với một lisp; [. – Tordek
python không cố gắng không giống như lisp. Chính GvR đã nói rằng PYthon và Lisp rất giống nhau, và rằng sự khác biệt là hời hợt hơn. Tôi đến từ một kế hoạch trở lại mặt đất bản thân mình, nhưng tôi đã sử dụng python gần như độc quyền trong ba năm nay, và tôi thích cách thứ hai nhiều hơn lần đầu tiên. – Broseph