matlab中for循环的用法_for循环中的局部变量引起的问题

Python中有一个问题:

循环变量泄漏

第一种情况

构造一个实际的环境,当连上WiFi的时候,手机才能更新app,下面的是网络环境的判断

abbbca631bd0860a468f76aeb2528379.png

可以看到,这里的 x 是一个在for循环的局部变量,按照正常的理解,

在for循环外面调用 x 应该是报错的,

但是在Python中,

for循环里面声明的变量,在for循环结束后,会保留 x 的值。

d8a57221f08524e8f7e511bd2a74844d.png

上面的输出的结果,第一个 x 的值当然是 WiFi,

第二个值就是遍历完列表之后,列表最后一个值4G。

第二种情况

那如果我们直接声明一个全局变量呢,最后输出的会是最开始的值吗?

下面的代码只是加了第3行,初始化了一下全局变量 x:

54b0f57698b6b2979ca362848b1d92cc.png

输出的结果:

2b970df12619edc39e4649a69a836070.png

还是和第一种情况一样,

充分说明了Python中,for循环中声明的临时变量的值会保留下来,

坏处很明显,

一个局部变量没有被销毁,反而保留了下来,习惯其他语言的程序员写起来很别扭,

一个不注意,可能还会有bug,一个后面怎么都不会想到的会出问题的地方,

避免起来很简单,

注意好命名就行,不要随便命名,全局变量和局部变量同名本来也不是个好习惯。

语法上的规避方法

下面是Python中列表推导式,在Python3中被优化过,

其实看到下图的红色波浪线,就大概知道,x 在这种情况下,只是一个局部变量了。

fe4e0866e518182a9ae08d347223cd87.png

输出结果:

838cf455cc9aa94e0f6bd7f5d4603ca0.png

显而易见,报错是 x 没有定义,x 已经被当作是局部变量了

我们再试一种情况

声明一个全局变量 x,值为WiFi,

3b16d17a82f33486a46b5e51a1894a0c.png

输出结果:

622aa1d37157e246437ca2da1660e82b.png

输出都是WiFi,第4行的 x 已经没有影响了。

所以平时要注意Python中的一些坑,

Python易用的同时,也有难用的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值