我认为,有一个类似的函数定义一个项目:locals()中不可访问的`.0`变量是否会影响内存或性能?
def f(a, (b1, b2), c):
print locals()
在调试我发现,.1
键出现在locals()
,与价值(b1, b2)
的代码。快速检查表明,一个函数定义如下所示:
def f((a1, a2)):
print locals()
将在locals()
与价值(a1, a2)
一个.0
关键。我对这种行为感到惊讶,但是在Python文档中找不到任何信息。
我的问题是:这些否则无法访问的位置变量影响内存或性能?他们记录在任何地方?他们的服务目的是什么?
有问题的项目是feedparser,这是基于SAX和可能有几十或几百将通过这种行为来影响函数调用。
自动元组参数拆包的这种风格已经在Python 3中被明确地删除了,如果我当时记得正确的话被描述为语法事故。这当然不是我喜欢看的风格。 – 2012-01-08 08:19:52
很高兴知道!你是对的,'2to3'工具会自动用'xxx_todo_changeme'替换'(b1,b2)'语法。不过,您是否有链接可以帮助解释这种行为,或者有关明确移除的链接? – 2012-01-08 08:42:13
@Kurt McKee [PEP 3113 - 删除元组参数拆包](http://www.python.org/dev/peps/pep-3113/)。 – 2012-01-08 09:03:20