Tôi đã sắp xếp một số mã thay crufty và đã xem qua các cấu trúc khá kỳ quặc sau:if (foo hoặc thanh hoặc baz) là None:
#!/usr/bin/env python2.7
# ...
if (opts.foo or opts.bar or opts.baz) is None:
# (actual option names changed to protect the guilty)
sys.stderr.write("Some error messages that these are required arguments")
... và tôi đã tự hỏi nếu điều này sẽ không bao giờ làm cho bất kỳ ý nghĩa nào có thể hiểu được.
tôi đã thay đổi nó để cái gì đó như:
#!/usr/bin/env python2.7
if None in (opts.foo, opts.bar, opts.baz):
# ...
tôi đã cháy lên một thông dịch viên và thực sự thử xây dựng đầu tiên ... nó dường như chỉ có tác dụng nếu các giá trị đều sai và cuối cùng các giá trị sai này là None. (Nói cách khác, việc triển khai CPython dường như trả lại giá trị sai thực sự hoặc giá trị cuối cùng đầu tiên từ một chuỗi các biểu thức hoặc).
tôi vẫn nghi ngờ rằng các mã đúng nên sử dụng một trong hai bất kỳ() hoặc tất cả() built-in đã được thêm 2,5 (mã trong câu hỏi đã đòi hỏi 2.7). Tôi chưa chắc chắn đó là ngữ nghĩa ưa thích/dự định khi tôi mới bắt đầu dự án này.
Vậy có trường hợp nào mã gốc này có ý nghĩa không?
Đó là khủng khiếp. hãy cẩn thận bạn không giới thiệu một lỗi mới bằng cách sửa lỗi này :) –