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使用saltstack生成服务器资产清单
Mar 01 Python
Django Highcharts制作图表
Aug 27 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
python aiohttp的使用详解
Jun 20 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
Python实现随机生成任意数量车牌号
Jan 21 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
python是怎么被发明的
Jun 15 Python
Python实现数字的格式化输出
Aug 01 Python
基于django和dropzone.js实现上传文件
Nov 24 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遍历数组的方法分享
2012/03/22 PHP
深入PHP异步执行的详解
2013/06/03 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python字符串的index和find的区别详解
2020/06/20 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
Collection和Collections的区别
2016/05/02 面试题
大学生实习感言
2014/01/16 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
2015年暑假生活总结
2015/07/13 职场文书
高中开学感言
2015/08/01 职场文书
交通安全学习心得体会
2016/01/18 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android