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批量修改文件后缀的方法
Jan 26 Python
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
Python编程入门的一些基本知识
May 13 Python
python实现旋转和水平翻转的方法
Oct 25 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
Python学习笔记之While循环用法分析
Aug 14 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
Apr 01 Python
基于Python实现粒子滤波效果
Dec 01 Python
python实现不同数据库间数据同步功能
Feb 25 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
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
php文件缓存方法总结
2016/03/16 PHP
PHP7匿名类用法分析
2016/09/26 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
js星星评分效果
2014/07/24 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
详解vue-router基本使用
2017/04/18 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
仓库管理制度
2014/01/21 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
居委会工作总结2015
2015/05/18 职场文书
升学宴祝酒词
2015/08/11 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS