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 ftp上传文件
Feb 13 Python
python 简单的多线程链接实现代码
Aug 28 Python
详解python的数字类型变量与其方法
Nov 20 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
取numpy数组的某几行某几列方法
Apr 03 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
python自定义时钟类、定时任务类
Feb 22 Python
Python3 A*寻路算法实现方式
Dec 24 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
Django中的AutoField字段使用
May 18 Python
python判断变量是否为列表的方法
Sep 17 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/06/09 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
php中yii框架实例用法
2020/12/22 PHP
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
基于Django模板中的数字自增(详解)
2017/09/05 Python
Python实现的字典值比较功能示例
2018/01/08 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
师范学院教师自荐书
2014/01/31 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
小学生暑假安全保证书
2015/07/13 职场文书