我已经编写了代码,使用for循环创建变量和赋值。
nums = [0,1,2,3]
names = ["aa","bb","cc","dd"]
for num, name in zip(nums, names):
globals()["df"+str(num)]= names[num]
print(exec(f'df{num}'))
但是我得到的结果是None
#result:
None
None
None
None
,但即使我试图改变代码与以下修改,仍然得到相同的
nums = [0,1,2,3]
names = ["aa","bb","cc","dd"]
for num, name in zip(nums, names):
globals()["df"+str(num)]= name
print(exec(f'df{num}'))
有谁能帮我找出这个问题的正确答案吗?
注意:即使我在名字的地方使用了exec函数(ex: exec(f'{names[num]}'),然后我得到名字错误。
考虑到exec
返回None
,我不明白为什么您会有其他期望。
试着改变你的代码,看看它是否正常工作,例如:
nums = [0,1,2,3]
names = ["aa","bb","cc","dd"]
for num, name in zip(nums, names):
globals()["df"+str(num)]= name
exec(f'print(df{num})')
输出:
aa
bb
cc
dd
更新:如果你想返回一些东西,你必须使用eval
:
nums = [0,1,2,3]
names = ["aa","bb","cc","dd"]
for num, name in zip(nums, names):
globals()["df"+str(num)]= name
print(eval(f'df{num}'))
输出:
aa
bb
cc
dd
我认为你在for循环中放错了打印,你应该执行变量的打印,只有执行变量不会返回也不会打印任何东西。这应该可以工作:
nums = [0, 1, 2, 3]
names = ["aa", "bb", "cc", "dd"]
for num, name in zip(nums, names):
globals()["df" + str(num)] = name
exec(f"print(df{num})")