变量的作用域

在Python中,变量的作用域指的是变量起作用的范围,不同的作用域内,虽然变量的名字相同,但是它们互不影响。变量按照作用域范围可分为局部变量全局变量

全局变量

全局变量是在函数定义和类的定义的外面声明的变量。其作用域为定义的模块,从定义开始直到模块结束。全局变量的主要功能和特点如下:

  • 全局变量降低了函数的通用性和可读性。应当尽量避免使用全局变量。
  • 全局变量一般用来定义常量;
  • 如果要想在函数内部使用或改变全局变量的值,需要使用global关键字声明一下。
movie_name ='射雕英雄传' #定义全局变量movie_namedef movie():    # 未用global声明会报错(因为下面使用了global会对这里有影响)    # movie_name='大红灯笼高高挂' #SyntaxError: name 'movie_name' is assigned to before global declaration    # 使用前也要global声明    #print(movie_name) # SyntaxError: name 'movie_name' is used prior to global declaration    global movie_name # 如果要想在函数movie()中改变全局变量的值,需要增加global关键字声明    print(movie_name) # 返回:射雕英雄传    movie_name='天龙八部'# 调用函数movie()print(movie_name) #返回天龙八部

全局变量的作用域与使用

局部变量

在函数体内或者函数的形参声明的变量均为局部变量, 局部变量的作用域与特点:

  • 局部变量的引用比全局变量要快,效率要高,因此,优先使用局部变量;
  • 如果局部变量和全局变量同名,则在函数体隐藏全局变量,只使用同名的局部变量

同名时,全局变量会被隐藏

局部变量和全局变量性能测试

import mathimport timedef global_varible_test():    start = time.time()    for i in range(100000000):        math.sqrt(20) #全局变量调用    end = time.time()    print(f'全局变量耗时{end-start}秒')def local_varible_test():    f = math.sqrt #局部变量定义    start = time.time()    for i in range(100000000):        f(20) #局部变量调用测试    end = time.time()    print(f'局部变量耗时{end-start}秒')# 全局调用global_varible_test()# 局部变量调用测试local_varible_test()

全局变量与局部变量在数据量很大情况下局部变量效率高

下节预告:lambda表达式和匿名函数

、简述global关键字的作用_二十三、Python变量作用域(局部变量和全局变量)相关推荐

  1. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法

    在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...

  2. 、简述global关键字的作用_详解static inline关键字

    详解static inline关键字 本文章为知乎用户 @徐yang哟 原创,禁止抄袭! 灵感来源 在查stm32的LL库部分函数的API时,有时会查到这种函数: __STATIC_INLINE vo ...

  3. 、简述global关键字的作用_GLOBAL和$GLOBALS[]的讲解

    一 Global Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件. 但是在函数体内定义的global变量,函数体 ...

  4. python变量作用域图解_简单了解Python变量作用域正确使用方法

    在写代码的时候,免不了要使用变量.但程序中的一个变量并不一定是在哪里都可以被使用,根据情况不同,会有不同的"有效范围". 看这样一段代码: def func(x): print ( ...

  5. python中的常量可以修改吗_深入理解Python变量与常量

    变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变.基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中.常量是一块只读的内存区域,常量一旦被初始化就不能被 ...

  6. java中static关键字的作用_面试|static 关键字有什么作用

    今天主要学习下Java语言中的static关键字. static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局 ...

  7. python中匿名函数的作用_什么是Python中的匿名函数

    匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该 ...

  8. 下列变量名不符合python命名规范的是_下列合法的Python变量名是( )

    [其它]主题插画设计(1920*1080PX) 表情包设计(30个) 专业形象设计(10个) 三类任选其一,每一类都要有设计说明. [单选题]下面代码的输出结果是________ x=10 y=3 p ...

  9. python变量定义大全_详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...

最新文章

  1. 在markdown里面插入特殊的符号
  2. sql复杂查询语句总结
  3. mongo 多条件筛选_如何制作提交按钮,实现多条件筛选
  4. 使用Java迭代器修改数据时要小心
  5. php 图片无法删除,php如何删除上传的图片
  6. android studio聊天跳转_Android 第三方应用跳转到QQ进行聊天
  7. Tensorflow安装错误ERROR: Cannot uninstall ‘wrapt‘.
  8. Java JDK 10:下一代 Java 有哪些新特性?
  9. 实时监控Cat之旅~对请求是否正常结束做监控(分布式的消息树)
  10. EXPLAIN查看SQL执行计划
  11. Vue 源码学习过程 - Observer/Dep/Watcher三者实现数据双向绑定
  12. Win10喇叭图标出现红叉提示未安装任何音频输出设备
  13. 智慧运维平台之全息监控
  14. 使用JavaScript克隆元素
  15. unity游戏开发为什么工作这么难找
  16. Hive中orderBy,sortBy,distribute by,cluster by,group by
  17. 什么是大数据(个人理解)
  18. ImportError: cannot import name ‘_gi‘ from partially initialized module ‘gi‘ ubuntu 终端无法启动
  19. 光纤收发器怎么使用?
  20. 下载imageLib工具包批量转换.flo文件为png

热门文章

  1. Android Browser学习七 书签历史模块: 书签UI的实现
  2. rhcs实现mysql高可用。仲裁磁盘
  3. 网管日志-06.08.16
  4. mysql时间 gt_关于Mysql 5.6 TIMESTAMPDIFFgt;=和gt;的一个问题 - SegmentFault 思否
  5. Python基础篇:用Python简简单单写个星空大战,可不能用来摸鱼啊~
  6. python如何写生日快乐图片_Python 生活第一周母校生日快乐
  7. mysql数据库命令大全菜鸟_mysql常用命令
  8. linux 常用压缩格式,Linux常见压缩格式之压缩与解压
  9. 动态时间规整算法(DTW)通俗易懂
  10. Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符