从列表创建变量并全局访问

时间:2018-01-08 06:43:14

标签: python variables keyerror

我正在编写一个从数据库中提取部门列表的程序。我想避免硬编码,因为列表可能会改变。

我想为每个部门创建一个变量,将问题填充到GUI中。我遇到的问题是我可以使用vars()函数从数据库列表创建变量。然后我存储变量名列表,以便我可以在程序的其他地方引用它们。只要我在同一个def中做所有事情,就没有问题。但我不知道如何在单独的函数中引用动态创建的变量。

由于我不会提前知道变量名称,所以我不知道如何在其他函数中使用它们。

attr='your_value'

2 个答案:

答案 0 :(得分:1)

在此处使用动态变量。没有意义,只需使用Python的内置容器之一,如dict

但是,您的代码无法正常工作的原因是因为vars()在没有参数的情况下调用时返回locals()。来自docs

  

vars ([object])返回模块类的__dict__属性,   实例或具有__dict__属性的任何其他对象。

     

...

     

如果没有参数,vars()就像locals()一样。请注意,当地人   字典仅对本地的更新有用   字典被忽略了。

实际上,您只想使用dict返回的globals()对象。但这应该让你想知道,为什么不把全局名称空间从它中删除,而只是使用你自己的自定义dict对象?阅读this相关问题。

答案 1 :(得分:0)

感谢您的提示。我能够用字典编写我需要的代码。作为python的新手,它需要一些试验和错误,但解决方案比我最初尝试的要好。

感谢您的帮助!