读完 vars() 后,我仍然对它实际在做什么感到有点困惑。在查看 Python 文档时,“如果对象具有 __ dict __ 属性,则 vars() 函数返回给定对象的 __ dict __ 属性。”那么,它返回一个字典对象?以下是我真正关心的问题:
1) 下面的代码中 vars() 实际上做了什么?
dict = {}
dict['H'] = atom
vars()[dict['H']] = 20
2) 为什么我创建的字典前面需要 vars() ,我可以省略它吗? (我知道如果我省略它,代码就会失败,但是完成相同任务的不同方法是什么?)
dict = {}
dict['H'] = atom
dict['H'] = 20
最佳答案
What is vars() actually doing in the below code?
它做了它一贯做的事情:它将所有局部变量作为字典检索。这就是在不带参数调用 vars
时的工作原理。
Why is the vars() necessary in front of the dictionary I created and could I leave it out?
似乎有人在本地范围内搞恶作剧。只是它是用 dict['H']
包装的,它只是一些变量(可能 atom
是一个字符串)。换句话说,他试图通过动态名称检索变量。例如
>>> test = 15
>>> x = 'test'
>>> vars()[x]
15
应该不惜一切代价避免这种情况。忘记您甚至不知道 vars()
的存在。我不知道您必须使用 vars() 而不是字典或其他“正常”(在这种情况下安全)结构的情况。您正在查看的代码非常难以维护、容易出错并且存在严重的安全问题。
关于python - 从 vars() 和 dict={} 创建的字典有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44055334/