如何获取新定义的变量

时间:2018-01-26 13:10:58

标签: python python-3.x dictionary global-variables

我试图想出一种方法来隔离在我的代码中的某个点之后已经定义的变量。为此,我写了以下内容:

from copy import deepcopy

beginning = deepcopy(dict(globals()))  # getting the current stand
a = 5  # new variable gets defined
# possibly more code with other definitions here
end = {k: v for k, v in dict(globals()).items() if k not in beginning}

打印end后,我希望只看到{'a': 5} ,但事实并非如此。相反,我重新获得了整个范围。

结果很明显,字典理解上的if条件失败了。所以我有两个问题:

  1. 我做错了什么?
  2. 如何实现我想要的结果?
  3. P.S:我使用的是Python 3.6.1

1 个答案:

答案 0 :(得分:3)

我在应用TypeError: can't pickle module objects时得到deepcopy()但忽略了这一点(并进行浅层复制),您可以获得所需的输出。

我认为您的概念错误是忘记beginning globals()已被添加到dict if,需要在>>> beginning = dict(globals()) >>> a = 5 >>> end = {k: v for k, v in dict(globals()).items() if k not in beginning and k != 'beginning'} >>> end {'a': 5} 子句中排除:

{{1}}