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随机生成信用卡卡号的实现方法
May 14 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
python实现简单爬虫功能的示例
Oct 24 Python
python 设置文件编码格式的实现方法
Dec 21 Python
Python处理中文标点符号大集合
May 14 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
js里的prototype使用示例
2010/11/19 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
vuejs如何配置less
2017/04/25 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
什么是GWT的Module
2013/01/20 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
食品安全标语
2014/06/07 职场文书
手机被没收的检讨书
2014/10/04 职场文书
营业用房租赁协议书
2014/11/26 职场文书
爱心募捐通知范文
2015/04/27 职场文书
入党函调证明材料
2015/06/19 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
Python序列化模块JSON与Pickle
2022/06/05 Python