Khi tôi gặp tình huống tôi có thể làm điều đó trong javascript, tôi luôn nghĩ nếu có một foreach
chức năng thì đó sẽ là sự tiện lợi. Theo foreach tôi có nghĩa là chức năng được mô tả dưới đây:
def foreach(fn,iterable):
for x in iterable:
fn(x)
họ chỉ làm điều đó trên mọi phần tử và không mang lại hoặc trả lại một cái gì đó, tôi nghĩ rằng nó nên là một hàm dựng sẵn và sẽ nhanh hơn viết nó bằng Python thuần túy, nhưng tôi không tìm thấy nó trong danh sách, hoặc Nó chỉ gọi một tên khác? hoặc tôi chỉ bỏ lỡ một số điểm ở đây?
Có lẽ tôi đã nhầm, vì việc gọi một hàm trong Python có chi phí cao, chắc chắn không phải là một thực hành tốt cho ví dụ. Thay vì một vòng lặp ra, hàm nên thực hiện vòng lặp bên trong thân của nó trông như thế này bên dưới đã được đề cập trong nhiều đề xuất mã của python:
def fn(*args):
for x in args:
dosomething
nhưng tôi nghĩ foreach vẫn được chào đón dựa trên hai sự thật:
- Trong trường hợp bình thường, mọi người chỉ không quan tâm đến hiệu suất
- Đôi khi API không chấp nhận đối tượng lặp lại và bạn không thể viết lại nguồn của nó.
for
là cho.
list.each(func)
sạch hơn for item in list: func(item)
IMO. Vấn đề là Python đã hoàn thành tốt công việc thay thế các mục yêu thích chức năng như map()
và filter()
với sự hiểu biết danh sách chỉ đơn giản là mở rộng tích hợp for
và if
(đồng nhất và dễ đọc) và một điều cụ .each()
thể có thể đi ngược lại.
sum(0 for _ in map(f, seq))
là một cách giải quyết có thể đọc được.
for
vòng lặp?