首页 > 解决方案 > 为什么全局不在 exec 命令中工作?

问题描述

这是我的代码。我基本上创建了一个函数,它根据熊猫表的长度自动生成列表。该函数将 pandas 表作为输入,您需要指定要将行转换为列表(column_name)的列,该函数基本上会自动执行列表。代码一切正常,但是,有一个问题。我希望 for 循环中的每个生成的列表 (i) 都是全局列表。所以我尝试将 exec(f'global {i}') 放入循环中,以尝试使所有列表都全局化。

一个解决方案是将整个代码块放在函数之外,它会正常工作,但是,我真的需要将代码放在函数中。关于如何使用 exec(f'global {i}') 使每个生成的列表成为全局列表的任何建议?

谢谢

def auto_generate_lists(x):
namesoflistssss1=[]
names_of_listsss = []
for i in range(0,len(x)):
    names_of_listsss.append(f'ls{i}')

for i,j in zip(names_of_listsss,range(0,len(x))):
    exec(f'global {i}')
    exec(f'{i} = []')
    exec(f"{i}.append(x['column_name'][{j}])")
    exec(f"namesoflistssss1.append('{i}')")
    
      

标签: pythonfunctionfor-loopglobal

解决方案


推荐阅读