热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python变量的作用域全局变量和局部变量全局和局部变量的效率测试

**1,全局变量**1,在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始,知道模块结束。2

**

1,全局变量

**

1,在函数和类定义之外声明的变量。

作用域为定义的模块,从定义位置开始,知道模块结束。

2,全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。

3,全局变量一般做常量使用

4,在函数内要改变全局变量的值,要使用global声明一下

全局变量的作用域测试:

a = 100 #全局变量def f1():global a # 在函数内改变全局变量的值,增加global关键字声明print(a) # 打印全局变量a的值a = 400f1()
print(a) # 打印修改后全局变量a的值

运行结果如下:

100
400

**

2,局部变量

**
1,在函数体中(包含形式参数)声明的变量

2,局部变量的引用比全局变量快,优先考虑使用

3,如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量

全局变量和局部变量的同名测试

a = 1def f1():a = 400print(a)f1()
print(a)

运行结果为:

400
1

输出局部变量和全局变量

a = 100def f1(a, b, c):print(a, b, c)print(locals())print("*" * 20)print(globals())f1(2, 3, 4)

运行结果为:

2 3 4
{'c': 4, 'b': 3, 'a': 2}
********************
{&#39;__name__&#39;: &#39;__main__&#39;, &#39;__doc__&#39;: None, &#39;__package__&#39;: None, &#39;__loader__&#39;: <_frozen_importlib_external.SourceFileLoader object at 0x00000235B34D4FD0>, &#39;__spec__&#39;: None, &#39;__annotations__&#39;: {}, &#39;__builtins__&#39;: , &#39;__file__&#39;: &#39;E:/06_面向对象/LX_15_单例.py&#39;, &#39;__cached__&#39;: None, &#39;a&#39;: 100, &#39;f1&#39;: }

**

3&#xff0c;全局和局部变量的效率测试

**
局部变量的查询和访问速度比全局变量块&#xff0c;尤其是在循环的时候。应优先考虑
在特别强调效率的地方或者循环次数较多的地方&#xff0c;可以将全局变量转为局部变量提高运行速度

效率测试操作如下&#xff1a;

import time
import mathdef test01():start &#61; time.time()for i in range(1000000):math.sqrt(30)end &#61; time.time()print("test01耗时{0}".format(end-start))def test02():start &#61; time.time()b &#61; math.sqrtfor i in range(1000000):b(30)end &#61; time.time()print("test02耗时{0}".format(end-start))test01()
test02()

运行结果如下图所示&#xff1a;

test01耗时0.4827232360839844
test02耗时0.23786211013793945


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
author-avatar
笑看斜阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有