如何在Python循环中基于列表项创建动态命名对象?
解决方案
推荐方案:用字典存储(更安全规范)
用字典来管理这些动态生成的对象是更合理的选择,既满足需求,又能避免变量名冲突、方便后续统一操作:
my_lst = ['cat', 'dog', 'rat'] tbl_dict = {} for var in my_lst: tbl_dict[f'tbl_{var}'] = my_function(var) # 调用对象时通过字典键获取 print(tbl_dict['tbl_cat'])
可选方案:动态创建变量(不推荐)
如果一定要生成独立的变量名,可以通过操作全局命名空间实现,但这种方式会让代码可读性变差,排查问题难度提升,不建议在正式代码中使用:
my_lst = ['cat', 'dog', 'rat'] for var in my_lst: var_name = f'tbl_{var}' globals()[var_name] = my_function(var) # 之后可直接使用tbl_cat、tbl_dog等变量 print(tbl_cat)
注:locals()在函数内部等场景下可能无法生效,而globals()会修改全局命名空间,滥用易引发意外问题。
内容的提问来源于stack exchange,提问作者beri
相关产品推荐
相关产品推荐

