列表推导:python2和python3中作用域的问题

python2中:

x = 'my love'
dummy = [x for x in 'ABC']
print x

此时x打印为:'C'

python3中:

x = 'my love'
dummy = [x for x in 'ABC']
print(x)

此时x打印为:'my love'

在 Python 3 中都有了自己的局部作用域,就像函数似的。表达式内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。
在python3中:
x = 'my love'
dummy1 = [ord(x) for x in x]

print(x)
print(dummy1)
x 的值被保留了。
列表推导也创建了正确的列表。
posted @ 2019-09-23 11:20  顽强的allin  阅读(347)  评论(0编辑  收藏  举报