सी/सी ++ में पास किया गया था, मुझे मैक्रो को परिभाषित करने के लिए डिबगिंग करते समय अक्सर यह उपयोगी होता है, ECHO(x)
कहता है, जो वैरिएबल नाम और उसके मान को मुद्रित करता है (यानी ECHO(variable)
हो सकता है प्रिंट variable 7
)। here वर्णित के रूप में आप 'स्ट्रिंगफिकेशन' ऑपरेटर #
का उपयोग कर मैक्रो में परिवर्तनीय नाम प्राप्त कर सकते हैं। क्या Python में ऐसा करने का कोई तरीका है?एक पाइथन वैरिएबल का नाम ढूंढें जो एक फ़ंक्शन
दूसरे शब्दों में, मैं एक समारोह
def echo(x):
#magic goes here
जो, अगर foo=7; echo(foo)
(या foo=7; echo('foo')
, हो सकता है) के रूप में कहा जाता है, foo 7
प्रिंट आउट होगा चाहते हैं। मुझे एहसास है कि यह करने के लिए यह छोटा है अगर मैं चर और उसके नाम दोनों को फ़ंक्शन पर पास करता हूं, लेकिन मैं डिबगिंग करते समय इस तरह के कार्यों का उपयोग करता हूं, और पुनरावृत्ति हमेशा मुझे परेशान करती है।
है। काम करते समय यह कैसे काम करता है, मुझे एक डुप्लिकेट प्रश्न मिला [यहां] (http://stackoverflow.com/questions/5503363/can-you-translate-this-debugging-macro-from-c-to-python) - हालांकि आपका रेगेक्स वहां दिए गए समान उत्तर से थोड़ा अधिक मजबूत है। – James
महान उत्तर, धन्यवाद। क्या आप संक्षेप में बता सकते हैं कि रेगेक्स कैसे काम करता है? – Ferguzz
@ फ़र्गज़, यह 'echo', फिर '\ s *' - 0 या कई रिक्त स्थान की खोज करता है, '\ (' - कोष्ठक, '(। +?) \) $' - गैर-greddy सभी प्रतीकों के लिए ' \) '(कोष्ठक) लाइन के अंत में (' $ ')। Http://www.regular-expressions.info/repeat.html पर अधिक जानकारी। आप [regexps डीबग भी कर सकते हैं] (http://stackoverflow.com/a/143636/1052325)। इंटरैक्टिव पायथन सत्र में आज़माएं: 're.compile (r'echo \ s * \ ((। +?) \) $ ', Re.DEBUG)' – reclosedev