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中使用MELIAE分析程序内存占用实例
Feb 18 Python
Python制作钉钉加密/解密工具
Dec 07 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
基于python代码批量处理图片resize
Jun 04 Python
浅谈Python基础之列表那些事儿
May 11 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中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
js验证表单大全
2006/11/25 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python 判断自定义对象类型
2009/03/21 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
生产管理的三大手法
2013/11/11 职场文书
2014年关工委工作总结
2014/11/17 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
小人国观后感
2015/06/11 职场文书
六一儿童节致辞
2015/07/31 职场文书
员工担保书范本
2015/09/22 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
完美解决golang go get私有仓库的问题
2021/05/05 Golang
如何理解python接口自动化之logging日志模块
2021/06/15 Python