Trong C/C++, tôi thường thấy hữu ích khi gỡ lỗi để xác định macro, ví dụ ECHO(x)
, in tên biến và giá trị của nó (ví dụ: ECHO(variable)
in variable 7
). Bạn có thể lấy tên biến trong macro bằng cách sử dụng toán tử 'stringification' #
như được mô tả here. Có cách nào để làm điều này trong Python?Tìm tên của biến số Python được chuyển đến hàm
Nói cách khác, tôi muốn có một chức năng
def echo(x):
#magic goes here
đó, nếu gọi là foo=7; echo(foo)
(hoặc foo=7; echo('foo')
, có lẽ), sẽ in ra foo 7
. Tôi nhận ra nó là tầm thường để làm điều này nếu tôi chuyển cả biến và tên của nó cho hàm, nhưng tôi sử dụng các hàm như thế này rất nhiều trong khi gỡ lỗi, và sự lặp lại luôn luôn làm tôi khó chịu.
Đó giải pháp thứ hai là cực kỳ thông minh. Trong khi tìm hiểu cách hoạt động, tôi đã tìm thấy một câu hỏi trùng lặp [ở đây] (http://stackoverflow.com/questions/5503363/can-you-translate-this-debugging-macro-from-c-to-python) - mặc dù regex của bạn mạnh hơn một chút so với câu trả lời tương tự ở đó. – James
câu trả lời tuyệt vời, cảm ơn. bạn có thể giải thích ngắn gọn về cách thức hoạt động của regex? – Ferguzz
@Ferguzz, Nó tìm kiếm 'echo', sau đó' \ s * '- 0 hoặc nhiều dấu cách,' \ ('- dấu ngoặc đơn,' (. +?) \) $ '- tìm kiếm không phải greddy cho tất cả các ký hiệu trước' \) '(dấu ngoặc đơn) ở cuối dòng (' $ '). Thông tin thêm tại http://www.regular-expressions.info/repeat.html. Bạn cũng có thể [gỡ lỗi regexps] (http://stackoverflow.com/a/143636/1052325). Hãy thử trong phiên Python tương tác: 're.compile (r'echo \ s * \ ((. +?) \) $ ', Re.DEBUG)' – reclosedev