本遍文章对global关键字和nonlocal关键字进行补充,这两个关键字在以后做python开发的时候,能不用尽量别用!最好别用!总会出现让你意想不到的后果...

1.先说第一种global,不管在任何作用域下,只要是使用global声明的变量,都会变为全局变量。

直接上例子。

首先是不使用global声明变量。

x = 1

def f1():

x = "suhaozhi"

print x

def f2():

x = "hamasakiayumi"

print x

f1()

>>> suhaozhi

f2()

>>> hamasakiayumi

print x

>>>1

函数查找变量的默认规则就是,先找函数内部,当本层函数内部没有这个变量,才会去外部作用域去一层一层去找,一直找到全局作用域,如果在本层找到了,就以本层内部的变量为准,上面的例子就很好的印证了这一点。

当使用了global声明变量为全局变量后,函数中的内部变量就会变为全局变量,如果变量名相同,甚至可以改变全局变量。

x = 1

def f1():

global x

x = "suhaozhi"

print x

def f2():

x = "hamasakiayumi"

print x

f1()

>>>suhaozhi

f2()

>>>hamasakiayumi

print x

>>>suhaozhi

#在最后可以看到,全局变量x的值被f1函数改变了,原来x = 1,现在x = “suhaozhi”。

2.nonlocal 修改(覆盖)上层函数的变量。注意!!!这种nonlocal声明在python2.x版本是不支持的!!!只有python3以上才支持。

def f1():

x = 1

print (x)

def f2():

nonlocal x

x = 2

print (x)

f2()

print (x)

f1()

>>>1

2

2

f2函数中的x变量替换掉了f1函数中的x变量。

python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字相关推荐

  1. global 和 nonlocal关键字

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. def fun(): global num1 num1=2 print("函数内修改后num1=&qu ...

  2. Python分享:命名空间和作用域的基础知识整合

    什么是命名空间? 命名空间是一个系统,它对Python中的每个对象都有一个唯一的名称.对象可能是变量或方法. Python本身以Python字典的形式维护名称空间. 在类似的行中,Python解释器可 ...

  3. python标志变量_Python 中的 global 标识对变量作用域的影响

    global 标识用于在函数内部,修改全局变量的值. 我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域: 变量定义在全局作用域,那就是全局变量. 变量在函数中定义,并且加了 glo ...

  4. 滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字

    橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十.global 和 nonlocal 作用域 10.1 ...

  5. python语法31[变量的作用域+global]

    一  变量与作用域 变量的定义使用var=varvalue 1)如果函数中定义了同名的变量,则同名的全局变量被屏蔽,否则查找使用全局变量 def f1():     v1 = 'local'      ...

  6. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

  7. Python学习--最完整的基础知识大全

    ##Python学习–最完整的基础知识大全 关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家! #####菜鸟教程python2 #####菜鸟教程python3 ...

  8. python函数中变量的作用域_Python中变量的作用域(variable scope)

    此文目的 此文主要讨论和总结一下,Python中的变量的作用域(variable scope). 目的在于,通过代码,图解,文字描述,使得更加透彻的了解,Python中的变量的作用域: 以避免,在写代 ...

  9. python作用域的理解-python中对变量的作用域LEGB、闭包、装饰器基本理解

    一.作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量 ...

最新文章

  1. P1486 [NOI2004] 郁闷的出纳员 FHQ-Treap
  2. dell服务器630虚拟盘初始化,DELL服务器配置Raid的步骤
  3. 计算机辅助药物合成投什么期刊,中国药物化学杂志审稿快吗
  4. 可视化篇(二)———使用matplotlib绘制常用3D图形及案例
  5. Node.JS 学习路线图
  6. 复工之后,如何让自己的时间更值钱
  7. 435. 无重叠区间(贪心经典题+思路+详解)
  8. 小米刷第三方recovery_小米平板4/Plus LTE版本开启电话功能
  9. Perforce使用指南_forP4V
  10. VS2008下直接安装使用Boost库1 46 1版本
  11. OpenMV(四)--STM32实现特征检测
  12. qt 里面使用webengine
  13. 五大最主流浏览器综合性能测试
  14. HBuilder原生功能概述
  15. 递归法:递归实现排列型
  16. mysql查询表字段的个数
  17. jsp管理系统页面模板_管理后台原型设计分享- 政务管理系统
  18. Wap模拟器,pc端浏览器,手机wap网站,web项目
  19. 前端 day01 常用基础语法
  20. 怎样轻松搞定图片转ico?

热门文章

  1. 上海大华条码称代码_银豹收银之大华条码秤传称设置
  2. SPI通信总线-51
  3. Java注解原来如此通俗易懂
  4. 100 计算机网络概述小结
  5. php将文件夹打包zip文件,php将文件夹打包成zip文件
  6. mysql键1键2_详解mysql基本操作详细(二)
  7. java微妙_10个微妙的Java编码最佳实践
  8. windows server 2012 FTP 服务器 / 虚拟目录
  9. extern C 作用
  10. sigmastarSSD201/SSD202 github上开源了!