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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
Python调用C/C++动态链接库的方法详解
Jul 22 Python
Python出现segfault错误解决方法
Apr 16 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
python利用Guetzli批量压缩图片
Mar 23 Python
python批量替换多文件字符串问题详解
Apr 22 Python
django加载本地html的方法
May 27 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python 使用shutil复制图片的例子
Dec 13 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
python和js交互调用的方法
Jun 23 Python
Python图像处理库PIL详细使用说明
Apr 06 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
文章推荐系统(二)
2006/10/09 PHP
discuz目录文件资料汇总
2014/12/30 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中的字典遍历备忘
2015/01/17 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python的Django框架中的Context使用
2015/07/15 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
Python实现的端口扫描功能示例
2018/04/08 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python实现的Iou与Giou代码
2020/01/18 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
pymysql模块使用简介与示例
2020/11/17 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
11月红领巾广播稿
2014/01/17 职场文书
学习十八大报告感言
2014/02/04 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书