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数组条件过滤filter函数使用示例
Jul 22 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
Python实现结构体代码实例
Feb 10 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
Python机器学习之底层实现KNN
Jun 20 Python
Python之matplotlib绘制饼图
Apr 13 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
vue实现表格数据的增删改查
2017/07/10 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python AES加密实例解析
2018/01/18 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
Python中if有多个条件处理方法
2020/02/26 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
30年同学聚会感言
2014/01/30 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
珠宝店促销方案
2014/03/21 职场文书
我的中国梦口号
2014/06/16 职场文书
保密工作承诺书
2014/08/29 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
个人委托书范本汇总
2014/10/01 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle
MySQL 条件查询的常用操作
2022/04/28 MySQL