【发布时间】:2019-06-06 14:20:56
【问题描述】:
我想知道是否可以在我的代码中插入额外的范围,而无需定义函数。我遇到的问题如下:
def func(a, b, c):
some_var = [a for a in b]
# do stuff with a
我的期望是 a 仍然是我传递给函数的值,因为我希望另一个 a 在列表理解的范围内(必须永远搜索那个错误!)。
我怎样才能重写它,使列表推导中的 a 在它自己的范围内?
我想要比它更优雅的东西
def func(a, b, c):
def helper(v):
return [a for a in v]
some_var = helper(b)
# do stuff with a
在使用{} 定义范围的语言中,您可以执行类似
def func(a, b, c) {
some_var = null
{
some_var = [a for a in b]
}
# do stuff with a
}
在 Python 中有类似的东西吗?
【问题讨论】:
-
这是什么python版本?你为什么不在 python 3 上?
-
列表推导(但不是集合推导、字典推导和生成器表达式)在 Python 2 中具有泄漏范围。这已在 Python 3 中修复
-
@ParitoshSingh Python 2.7。这是我工作的要求(我知道,我知道,也喜欢python 3)
-
@User12547645 你不能把内部变量重命名为别的吗?
-
@User12547645 只是重命名循环变量?如果您希望它在自己的范围内,那么名称无论如何都无关紧要。
标签: python python-2.7 scope list-comprehension