Допустим, у меня есть следующая функция
def code_string(a):
for i in range(a):
exec('f=a+i')
print(f)
Когда я запускаю ее с помощью следующей команды
code_string(3)
Это дает мне следующую ошибку
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-4-9c91de8067f3> in <module>()
----> 1 code_string(3)
<ipython-input-2-2ae9915b0a25> in code_string(a)
2 for i in range(a):
3 exec('f=a+i')
----> 4 print(f)
NameError: name 'f' is not defined
когда я запускаю его не в функции, как это
a=3
for i in range(a):
exec('f=a+i')
print(f)
Это прекрасно работает, как и так
3
4
5
Почему это происходит, и могу ли я выполнить строковый код внутриfunction in python
ПРИМЕЧАНИЕ. Это всего лишь демонстрационный пример, поэтому не ожидайте, что мой код будет таким же простым, как этот демонстрационный пример. Я просто выразил это, чтобы продемонстрировать проблему.