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中字符串格式化str.format的详细介绍
Feb 17 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
在python中用url_for构造URL的方法
Jul 25 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
Python concurrent.futures模块使用实例
Dec 24 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
python脚本框架webpy模板控制结构
Nov 20 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
json 实例详细说明教程
2009/10/31 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python简单猜数游戏实例
2015/07/09 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
Django的信号机制详解
2017/05/05 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
python生成word合同的实例方法
2021/01/12 Python
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
政府绩效管理实施方案
2014/05/04 职场文书
动物科学专业求职信
2014/07/27 职场文书
企业介绍信范文
2015/01/30 职场文书
2016年元旦致辞
2015/08/01 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
2019秋季运动会口号
2019/06/25 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
JS实现简单的九宫格抽奖
2022/06/28 Javascript