【发布时间】:2014-04-13 23:46:00
【问题描述】:
所以我使用 locals() 来获取函数中的一些参数。效果很好:
def my_function(a, b):
print locals().values()
>>> my_function(1,2)
[1, 2]
标准的东西。但现在让我们介绍一个列表推导式:
def my_function(a, b):
print [x for x in locals().values()]
>>> my_function(1,2)
[[...], 1, 2]
嗯?为什么要插入自引用?
【问题讨论】:
-
不是在 Python 2.7 中它没有。 Python 2.6,是的。
-
为什么只打印值?你为什么不把钥匙打印出来,看看什么指的是什么?
-
@MartijnPieters 是 2.6 中的错误吗?它在 2.7 中消失了,是的,但不幸的是我没有安装 2.7 的奢侈。
-
@LittleBobbyTables:很可能是列表推导的命名空间处理发生了变化; list comp 输出似乎存储在 locals 命名空间中。我也在 Python 2.5 中看到它。
-
@LittleBobbyTables:如果您需要在列表理解中过滤掉它,请使用
[v for k, v in locals().iteritems() if not k.startswith('_[')]。
标签: python list-comprehension python-2.6 python-internals locals