Если Вы настаиваете, вот, некоторые ужасные осматривают - базирующееся решение.
import inspect, re
def varname(p):
for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:
m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
if m:
return m.group(1)
if __name__ == '__main__':
spam = 42
print varname(spam)
я надеюсь, что это вдохновит Вас переоценивать проблему, которую Вы имеете и ищете другой подход.
IMHO, действительно полезный инструмент для нарезки программ часто входит в состав инструментов статического анализа, например, CodeSurfer для C ++ и Clang of LLVM . Если вы ищете инструмент C # и / или плагин Visual Studio, см. Какие инструменты статического анализа доступны для C # .
Однако они не идеальны для реализации результатов академических исследований, пожалуйста, будьте знают об этом.