python 中的 globas 和 exec
globas and exec in python
我已经编写代码,使用 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 函数(例如:exec(f'{names[num]}') 然后我得到名称错误。
考虑到 exec
returns 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
更新:如果你想return一些东西,你必须使用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 循环中放错了打印,您应该执行变量的打印,仅执行变量不会 return 也不会打印任何内容。这应该有效:
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})")
我已经编写代码,使用 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 函数(例如:exec(f'{names[num]}') 然后我得到名称错误。
考虑到 exec
returns 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
更新:如果你想return一些东西,你必须使用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 循环中放错了打印,您应该执行变量的打印,仅执行变量不会 return 也不会打印任何内容。这应该有效:
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})")