python中for循环变量作用域及用法详解


Posted in Python onNovember 05, 2019

在讲这个话题前,首先我们来看一道题:

代码1:

def foo():
  return [lambda x: x**i for i in range(1,5,2)]
print([f(3) for f in foo()])

伙伴们,你们认为这里产生的结果是什么呢?我们再来看下这题的变体:

代码:2

def foo():
  functions=[]
  for i in range(1,5,2):
    def inside_fun(x):
      return x ** i
    functions.append(inside_fun)
  return functions
print([f(3) for f in foo()])

这两题的结果是一样的:都是[27,27]。我相信大部分的伙伴也都会有个疑问,为什么不是[3,27]呢?

这里的就是我们今天要说的for循环中的变量作用域,因为for循环不是一个函数体,所以for循环中的变量i的作用域其实和for循环同级,即类似下面代码

代码3:

def foo():
  i=None
  for i in range(1,5,2):
    pass
  print(i)
foo() # 结果为3,即循环结束i的最终值

另外因为python运行到代码行时才会去查找该变量的作用域,所以代码1和代码2中的i值在调用的时候为for循环最终值3,所以结果都是执行x**3。

ps:下面看下python中for循环的用法

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

语法模式:for iterating_var in sequence:

in 字面意思,从某个集合(列表等)里顺次取值

#遍历数字序列
the_count=[1,2,3,4,5]
for number in the_count:
  print(f"This is count {number}")
输出结果:
This is count 1
This is count 2
This is count 3
This is count 4
This is count 5 
#遍历一维字符串数组
fruits=['apples','oranges','dimes','quarters']
for fruit in fruits:
  print(f"A fruit of type:{fruit}")
输出结果为:
A fruit of type:apples
A fruit of type:oranges
A fruit of type:dimes
A fruit of type:quarters
#遍历字符串
list_python='python'
for j in list_python:
  print(f"{j}")
输出结果为:
p
y
t
h
o
n
#通过序列索引迭代
elements=[]#列表为空
for i in range(0,6):#012345
  print(f"Adding {i} to the list.")
  elements.append(i)#得到elements=[0,1,2,3,4,5]
  #len(elements)长为6,range(len(elements))==range(6)
for i in range(len(elements)):
  print(f"Elemnet was:{i}")
输出结果为:
Adding 0 to the list.
Adding 1 to the list.
Adding 2 to the list.
Adding 3 to the list.
Adding 4 to the list.
Adding 5 to the list.
Elemnet was:0
Elemnet was:1
Elemnet was:2
Elemnet was:3
Elemnet was:4
Elemnet was:5

总结

以上所述是小编给大家介绍的python中for循环变量作用域及用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python获取局域网占带宽最大3个ip的方法
Jul 09 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
Django app配置多个数据库代码实例
Dec 17 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
python实现引用其他路径包里面的模块
Mar 09 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 #Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 #Python
Python socket模块ftp传输文件过程解析
Nov 05 #Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 #Python
Python socket模块方法实现详解
Nov 05 #Python
基于python3 的百度图片下载器的实现代码
Nov 05 #Python
Python hashlib模块加密过程解析
Nov 05 #Python
You might like
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php自定义分页类完整实例
2015/12/25 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
有趣的python小程序分享
2017/12/05 Python
python实现Floyd算法
2018/01/03 Python
Python中偏函数用法示例
2018/06/07 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Django多数据库的实现过程详解
2019/08/01 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
Python中的整除和取模实例
2020/06/03 Python
MYSQL支持事务吗
2013/08/09 面试题
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
2015年副班长工作总结
2015/05/15 职场文书
大国崛起日本观后感
2015/06/02 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
MySQL 字符集 character
2022/05/04 MySQL