tôi nhận thấy một vấn đề khi tôi đã cố gắng sử dụng del trong một lambda mỏng ra một danh sách các chủ đề để chỉ những người chạy:Python del() được xây dựng trong không thể được sử dụng trong nhiệm vụ?
map(lambda x: del(x) if not x.isAlive() else x, self.threads)
Bỏ qua trong một giây rằng điều này không làm bất cứ điều gì, tôi chỉ lừa xung quanh với bản đồ, giảm và lambda.
Điều này không thành công với lỗi cú pháp tại del (x). Với một số rối tung xung quanh, tôi nghĩ rằng vấn đề là del() không trả về một giá trị. Ví dụ, điều này không thành công với các lỗi tương tự:
b = 5
x = del(b)
này không, tuy nhiên:
def rmThis(x): del(x)
Có nghĩa là tôi đang sử dụng workaround này:
map(lambda x: rmThis(x) if not x.isAlive() else x, self.threads)
Vậy là hạn chế chỉ vì del() không trả về một giá trị? Tại sao không?
Tôi đang sử dụng python 2.6.2
Có cần phải gọi 'del' trên đối tượng chuỗi một cách rõ ràng không? Nếu bạn có thể để nó tới bộ đếm tham chiếu hoặc bộ thu gom rác, bạn có thể viết tihs: '[thread for thread in self.threads if thread.isAlive()]'. –
Ngay cả khi điều này làm việc, nó sẽ không hoạt động :) Bạn không thể xóa các yếu tố từ một iterable trong khi bạn đang iterating trên nó. –