tôi thấy mình viết khẳng định như thế này:python: tự động in đại diện của mỗi thành phần trong một biểu thức
if f(x, y) != z:
print(repr(x))
print(repr(y))
print(repr(z))
raise MyException('Expected: f(x, y) == z')
Tôi đã tự hỏi nếu có một cách để viết một hàm có thể chấp nhận một biểu Python hợp lệ và một ngoại lệ lớp như một đầu vào, đánh giá biểu thức và nếu nó tìm thấy nó là sai, in ra biểu diễn của từng thuật ngữ mức thấp nhất trong biểu thức và tăng ngoại lệ đã cho?
# validate is the mystery function
validate('f(x, y) == z', MyException)
Tôi sẽ lật thông điệp ngoại lệ: thay vì nói những gì bạn muốn, chỉ định những gì bạn phát hiện d là sai. Điều này cho cùng một biểu thức (! =) Mà bạn đã thử nghiệm thay vì nghịch đảo của nó (==). –