python中的推导式_Python2和Python3中列表推导式的不同

Python2和Python3中列表推导式的不同

python2

>>> x = 'my girl'

>>> lst = [x for x in 'hello']

>>> x

'o'

可以看到x的值被覆盖了

来看python3

python3

>>> x = 'my girl'

>>> lst = [x for x in 'hello']

>>> x

'my girl'

x的值没有被覆盖,这是因为python3为列表推导式创建了局部作用域,这个局部作用域内定义的变量不会对全局作用域的变量造成干扰

补充:

for 循环与列表推导式的情况不同,无论是python2还是python3都会覆盖

python2

>>> i=10

>>> for i in range(5):

... print(i)

...

0

1

2

3

4

>>> i

4

python3

>>> i=10

>>> for i in range(5):

... print(i)

...

0

1

2

3

4

>>> i

4

## 小结

- python2中列表推导式中定义的变量会覆盖前面同名的变量

- python3中不会,因为列表推导式中定义的变量只作用于列表推导式内部(局部作用域)

- for循环中都会覆盖之前的变量,不管是python2还是python3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值