全局变量和局部变量

  定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
  局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

total = 0; # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):#返回2个参数的和."total = arg1 + arg2; # total在这里是局部变量.#在函数中 如果对一个和全局变量名相同的变量进行=value的时候,默认是定义一个变量#只不过这个变量的名字和全局变量的名字相同罢了print ("函数内是局部变量 : ", total)return total;#调用sum函数
sum( 10, 20 );
print ("函数外是全局变量 : ", total)

以上实例输出结果:

函数内是局部变量 : 30
函数外是全局变量 : 0

global 和 nonlocal关键字

global

  当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

以下实例修改全局变量 num:

num = 1
def fun1():global num  # 使用global用来对一个全局变量的声明,那么这个函数中的num就不是定义一个局部变量,而是#对全局变量进行修改print(num) num = 123print(num)
fun1()

以上实例输出结果:
1
123

列表是当全局变量的
如下面的例子

nums = [11,22,33]
infor = {"name":"wang"}def test():#for num in nums:#    print(num)nums.append(44)infor['age'] = 18def test2():print(nums)print(infor)test() #[11, 22, 33, 44]
test2() #{'name': 'wang', 'age': 18}

nonlocal

  如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

def outer():num = 10def inner():nonlocal num   # nonlocal关键字声明num = 100print(num)inner()print(num)
outer()

以上实例输出结果:
100
100

另外有一种特殊情况,假设下面这段代码被运行:

a = 10
def test():a = a + 1print(a)
test()

以上程序执行,报错信息如下:

Traceback (most recent call last):File "test.py", line 7, in <module>test()File "test.py", line 5, in testa = a + 1
UnboundLocalError: local variable 'a' referenced before assignment

  错误信息为局部作用域引用错误,因为 test 函数中的 a 使用的是局部,未定义,无法修改

转载于:https://www.cnblogs.com/yangliguo/p/7921423.html

Python全局变量和局部变量相关推荐

  1. python变量作用域图解_图解python全局变量与局部变量相关知识

    这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解 ...

  2. Python 全局变量和局部变量

    这篇文章主要介绍了Python 全局变量和局部变量,命名空间的概念的提出是为了划分和控制变量是否可见,以及生存周期的长短:命名空间的作用范围叫做作用域更多详细内容需要的小伙伴可以参考一下 1.命名空间 ...

  3. c++ 全局变量_专业解码 | 带你了解Python全局变量与局部变量!

    最新 动态 实时 资讯 部门 通知 专业 速递 NEWS 导语 爱学习的的小伙伴们,在学习专业知识的你们,是否有困惑与不解,不要着急,本栏目致力于为同学们指路迷津. <专业速递>--带你了 ...

  4. Python 全局变量、局部变量、静态变量 详解

    参考连接: 1. http://blog.csdn.net/eastmount/article/details/48766861 2. http://www.imooc.com/article/146 ...

  5. python全局变量和局部变量可以同名吗_Python global

    Python global使用教程 如果局部变量隐藏了全局变量,那么当我们再次访问全局变量时,程序会报错,会说找不到该变量,因为,该全局变量被局部变量隐藏了. Python变量重名详解 语法 varn ...

  6. python 全局变量、局部变量

    from <流畅的python> def f1(a):print(a)print(b) f1(3)# NameError: name 'b' is not defined def f1(a ...

  7. python 全局变量与局部变量

    一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/pythona = 1 b = [2, 3]def func():if a ...

  8. Python全局变量和局部变量(超详细,纯干货,保姆级教学)

    全局变量定义: 在函数外部定义的变量.所有函数内部都可以使用这个变量. 局部变量定义: 在函数内部定义的变量.这个变量只能在定义这个变量的函数内部使用. 第一种:global定义全局变量在自定义函数内 ...

  9. python 全局变量和局部变量的区别

    python 变量 1. 全局变量:在整个py文件中声明,运行时始终有效. 2. 局部变量:在函数内部声明,函数运行时有效. 3. 局部变量只能访问全局变量,不能更改(可读不可写) c = 1 def ...

最新文章

  1. sql去除空值_SQL汇总分析
  2. 懒人专用SSH框架下的基本配置
  3. 【笔记】JAVA 中国象棋游戏 部分源码
  4. linux 命令启动菜单栏,Linux守护进程的启动方法
  5. 2009.12.9.工作日记
  6. Android自动化测试 monkey 工具学习3
  7. 数据:以太坊2.0合约质押新增7.47万ETH
  8. 理解$watch ,$apply 和 $digest --- 理解数据绑定过程
  9. 鸿蒙系统的正式推送范围,华为鸿蒙系统或6月正式推送升级,手机版已开始小范围推送...
  10. 朗途职业规划之一 职业发展报告 (北森测评)
  11. 漫画:什么是二分查找?(修订版)
  12. flutter微信登录集成
  13. LUP分解求解线性方程组及求逆矩阵 java
  14. java 怎么暂停程序_java – 如何暂停程序直到按下按钮?
  15. Base64 编码整理
  16. 记录使用git时出现Permission denied 问题的解决
  17. win10打字反应慢处理
  18. 如何通过网页的超连接,显示qq聊天对话框
  19. 51款BI产品、80种可视化工具、80张图(总有一款适合你)
  20. 新版标准日本语高级_第14课

热门文章

  1. 电影与爆米花(模拟)
  2. 【HDU - 1024 】Max Sum Plus Plus (dp及优化,最大m子段和)
  3. 【OpenJ_Bailian - 1258】【POJ - 1258】Agri-Net (最小生成树裸题)
  4. java生命小游戏_Java修炼——飞机生存小游戏
  5. python判断语句入门教程_Python中的条件判断语句基础学习教程
  6. python学习实例(3)
  7. 再议指针和引用的一些事情吧
  8. linux 中阻塞与非阻塞 同步与异步
  9. 51单片机下载完程序后不亮_程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍...
  10. linux加密框架 crypto 算法管理 - 算法查找接口