我是靠谱客的博主 典雅衬衫,最近开发中收集的这篇文章主要介绍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易用的同时,也有难用的地方。

最后

以上就是典雅衬衫为你收集整理的matlab中for循环的用法_for循环中的局部变量引起的问题第一种情况第二种情况语法上的规避方法的全部内容,希望文章能够帮你解决matlab中for循环的用法_for循环中的局部变量引起的问题第一种情况第二种情况语法上的规避方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部