Делаю функцию, которая будет выполнять команду с помощью exec и печатать время выполнения. Также предусмотрена переменная ret, которая, если в команде идет присваивание с ее использованием, должна быть напечатана.
Экспериментальный код :
def runner(code):
try :
t = time.time()
ret = ''
exec(code)
#print(ret)
t = time.time() - t
except:
print('error')
return "Error"
an = 'Time : '+ str(t)+'.Ans : '+str(ret)
return an
Пример вызова :
runner('ret = 10**5')
Но вывод измененного ret не происоходит, хотя если попробовать это сделать в шелле, всё работает :
>>> code
'ret = 7'
>>> ret
''
>>> exec(code)
>>> ret
7
>>>
В самой функции явно происходит выполнение - с усложнением задачи таймер показывает увеличенное значение:
>>> runner('s = 19**2000000')
code = "s = 19**2000000"
try
'Time : 1.6354055404663086,Ans : '
>>> runner('s = 19**20000000')
code = "s = 19**20000000"
try
'Time : 59.313780546188354,Ans : '
>>>
В чём ошибка?