说我有一些功能:
def f(x):
return x
...以及使用它的一些类定义,如下所示:
class Cgood():
x = None
y = f('foo')
这很好用:
>>> Cgood().y
'foo'
但是,如果我尝试做这样的事情:
class Cbad():
x = None
y = [f(x) for _ in 'abcdefg']
我们收到错误:
NameError: name 'x' is not defined
为什么x
在列表推导范围内不可用?是否有其他方式可以访问x
?我看到的唯一方法是放弃列表comp并使用正常的for
循环。
编辑:我在Python 3.6.2上