我试图调试一些使用内置任何功能的代码,但我不知道自己做错了什么。我能够使用PDB访问变量,但是一旦我在生成器中将它用于任何函数,它似乎突然被认为是未定义的。我做错了什么?
-> src = self['src']
(Pdb) n
-> if any(key not in src for key in self.keys):
(Pdb) p src
{'type': 'local', 'location': '/tmp/tmpy5F3Rz/secrets'}
(Pdb) p type(src)
<type 'dict'>
(Pdb) p self.keys
['location', 'type']
(Pdb) [key not in src for key in self.keys]
[False, False]
(Pdb) n
*** NameError: global name 'src' is not defined
答案 0 :(得分:1)
答案 1 :(得分:0)
执行时
if any(key not in src for key in self.keys):
&#39;键不在src中为self.keys&#39;中的键。参数将作为生成器传递给任何函数。
理由: -
1)发电机有自己的范围即。 in(键不在src中用于self.keys中的键)
2)生成器懒洋洋地执行参考: - http://naiquevin.github.io/python-generators-and-being-lazy.html
可能的解决方案: -
用
替换语句 if any([key not in src for key in self.keys]):