Я имею в виду определение функции print_echo
, которая заменяет print
, так что в дополнение к печати результата выражения она печатает само выражение.
Если я просто передам выражение в виде строки и использую eval
внутри print_echo
, он не будет знать никакой локальной переменной для функции вызывающей стороны.Мой текущий код
def print_echo( expr ) :
result = eval( expr )
print( expr + ' => ' + str( result ) + ' ' + str( type( result ) ) )
return
Но при использовании
def my_func( params ) :
a = 2
print_echo( "a" )
я получаю (не удивительно)
NameError: name 'a' is not defined
Я имею в виду, чтобы получить
a => 2 <type 'int'>
Я задумал два способа обойти это.
Использовать альтернативу Python для макросов препроцессора C.Что-то вроде C Макропроцессор препроцессора для Python
Передать все локальные переменные в print_echo.Что-то вроде Передача всех аргументов функции в другую функцию
Поскольку я нахожу неудобные аспекты для каждого из них, Есть ли альтернатива этим?
Обратите внимание, что выражение является обобщенным выражением, а не обязательно именем переменной.