首先,让我说我在创建动态命名变量时阅读了许多具有类似主题的线程,但它们主要与Python 2相关,或者它们假设您正在使用类.是的,我在Python 2和Python 3中阅读了exec函数的行为.
我也知道在99%的时间内创建动态命名的变量是一个坏主意,字典是获得的方式,但我只想知道它是否仍然可行以及exec和locals在python 3中的运行方式.
我想展示一些示例代码来说明我的问题(斐波那契计算斐波纳契数,ListOfLetters提供["A","B",......]):
def functionname():
for index, buchstabe in enumerate(ListOfLetters.create_list("A", "K"), 1):
exec("{} = {}".format(buchstabe, fibonacci(index)) ) #A = 1, B = 1, C = 2, D = 3, E = 5,...
print(index, buchstabe, eval(buchstabe)) #works nicely, e.g. prints "4 D 3"
print(locals()) #pritns all locals: {'B': 1, 'A': 1, 'index': 11, 'C': 2, 'H': 21, 'K': 89, ...
print(locals()['K']) #prints 89 as it should
print(eval("K")) #prints 89 as it should
print(K) …Run Code Online (Sandbox Code Playgroud)