python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字
本遍文章对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关键字相关推荐
- global 和 nonlocal关键字
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. def fun(): global num1 num1=2 print("函数内修改后num1=&qu ...
- Python分享:命名空间和作用域的基础知识整合
什么是命名空间? 命名空间是一个系统,它对Python中的每个对象都有一个唯一的名称.对象可能是变量或方法. Python本身以Python字典的形式维护名称空间. 在类似的行中,Python解释器可 ...
- python标志变量_Python 中的 global 标识对变量作用域的影响
global 标识用于在函数内部,修改全局变量的值. 我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域: 变量定义在全局作用域,那就是全局变量. 变量在函数中定义,并且加了 glo ...
- 滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字
橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十.global 和 nonlocal 作用域 10.1 ...
- python语法31[变量的作用域+global]
一 变量与作用域 变量的定义使用var=varvalue 1)如果函数中定义了同名的变量,则同名的全局变量被屏蔽,否则查找使用全局变量 def f1(): v1 = 'local' ...
- python常用变量名_python基础知识整理
Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...
- Python学习--最完整的基础知识大全
##Python学习–最完整的基础知识大全 关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家! #####菜鸟教程python2 #####菜鸟教程python3 ...
- python函数中变量的作用域_Python中变量的作用域(variable scope)
此文目的 此文主要讨论和总结一下,Python中的变量的作用域(variable scope). 目的在于,通过代码,图解,文字描述,使得更加透彻的了解,Python中的变量的作用域: 以避免,在写代 ...
- python作用域的理解-python中对变量的作用域LEGB、闭包、装饰器基本理解
一.作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量 ...
最新文章
- P1486 [NOI2004] 郁闷的出纳员 FHQ-Treap
- dell服务器630虚拟盘初始化,DELL服务器配置Raid的步骤
- 计算机辅助药物合成投什么期刊,中国药物化学杂志审稿快吗
- 可视化篇(二)———使用matplotlib绘制常用3D图形及案例
- Node.JS 学习路线图
- 复工之后,如何让自己的时间更值钱
- 435. 无重叠区间(贪心经典题+思路+详解)
- 小米刷第三方recovery_小米平板4/Plus LTE版本开启电话功能
- Perforce使用指南_forP4V
- VS2008下直接安装使用Boost库1 46 1版本
- OpenMV(四)--STM32实现特征检测
- qt 里面使用webengine
- 五大最主流浏览器综合性能测试
- HBuilder原生功能概述
- 递归法:递归实现排列型
- mysql查询表字段的个数
- jsp管理系统页面模板_管理后台原型设计分享- 政务管理系统
- Wap模拟器,pc端浏览器,手机wap网站,web项目
- 前端 day01 常用基础语法
- 怎样轻松搞定图片转ico?