python global nonlocal
global:
方法之外在modual中的变量定义为全局变量。方法内的变量为局部变量。
一般情况下,全局变量可以被使用,但是不应该被修改,不然会报错。
不过一般不建议对全局变量做修改,如果有多个方法都对全局变量修改,会乱套的。
例子(1):
global_var = 123def test():global_var = 1print(global_var)test()
print(global_var) ---结果1123
尽管global_var 定义了一个全局变量,但是test方法中的global_val为一个新的局部变量,只是两个名字一样而已,但是两个对象。因此可看到test内的print打印的是局部变量结果为1,test后的print为全局变量(局部变量只能在方法体内有效),结果为123。
例子(2):
global_var = 123def test():global_var += 1print(global_var)test() print(global_var)
执行结果会报错:
UnboundLocalError: local variable 'gloal_var' referenced before assignment
因为test中的 global_val +=1 表示 global_val之前已经定义过,然后+1操作,但是在执行时,发现test中并未有局部变量global_val。因此报错,因全局变量没有被在test中声明。
因此不能被修改。
例(3):
global_var = 123def test():print(global_var)test() print(global_var) 结果----123123
此时可以看到使用的是全局的global_val.
例(4):
global_var = 123def test():global global_varglobal_var += 1print(global_var)test() print(global_var)结果---124124
在test中定义global_val 为使用全局 global。因此全局的变量发生改变
nonlocal: 方法中的子方法调用父方法中的变量。
一般我们使用将父方法中的变量作为参数传入仅子方法中进行调用使用,
使用这种的话就不需要调入直接可操作。
但这种限制了子方法仅仅对父方法的内部操作,扩展性差。
def test():t_var = 23t_var += 1print(t_var)sub_test()print(t_var)def sub_test():nonlocal t_vart_var += 15test()---结果: SyntaxError: no binding for nonlocal 't_var' found
子方法必须定义在父方法中才可使用nonlocal,不然无效
def test():t_var = 23t_var += 1print(t_var)def sub_test():nonlocal t_vart_var += 15sub_test()print(t_var)test()--------结果: 29 34
以上这种形式就是那种面向过程的编程。
转载于:https://www.cnblogs.com/DennyZhao/p/8601021.html
python global nonlocal相关推荐
- python global和nonlocal用法解析
这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 global和nonlocal ...
- python global和nonlocal_python global和nonlocal用法解析
python global和nonlocal用法解析 这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值 ...
- Python 的nonlocal使用
文章目录 前言 nonlocal 二.使用步骤 nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量 代码示例 每次调用函数test2(),用的还是那个实例vald内存空间(nonlo ...
- python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字
本遍文章对global关键字和nonlocal关键字进行补充,这两个关键字在以后做python开发的时候,能不用尽量别用!最好别用!总会出现让你意想不到的后果... 1.先说第一种global,不管在 ...
- 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用
课程起源 有一次在工作中编写python工具时,遇到一个 问题:从配置文件读取变量A后,无法在内存中把A的值改变成新的内容.为了解决"更新内存中变量"的这个问题,查找了一些帖子,结 ...
- python global和nonlocal_python中global与nonlocal比较
python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 一.global global关键字用来在函数或其他局部作用域中使 ...
- python中nonlocal是什么意思_Python中的global和nonlocal
在Python中,一个变量的scope范围从小到大分成4部分:Local Scope(也可以看成是当前函数形成的scope),Enclosing Scope(简单来说,就是外层函数形成的scope), ...
- python中nonlocal是什么意思_Python中关键字nonlocal和global的声明与解析
请问Python3的关键字有哪些 python一共有35个关键字,在python37版本,新添加了async和await,可以通过import keyword借用keyword模块中的kwlist方法 ...
- 跟着太白老师学python day10 函数嵌套, global , nonlocal
函数嵌套: 第一种嵌套方法 def func():count = 123def inner():print(count)inner() func() 第二种嵌套方法 count = 123 def f ...
最新文章
- 避免成为垃圾邮件_如何避免犯垃圾
- Kendo UI开发教程(8): Kendo UI 特效概述
- Kafka参数broker.id详解
- 前端学习(2374):技术栈的使用
- php如何将mysql数据库中的admin字段赋值给session_转php中使用session_set_save_handler()函数把session保存到MySQL数据库实例...
- java集合按大小排序_JAVA中对List根据map某个key值从小到大顺序进行排序
- Pentium M处理器架构/微架构/流水线(1) - 流水线概述
- Android 系统(124)---Android 如何快速写满存储空间
- mysql下载安装使用教程
- hdu3947 给一些已知(需费用)路径去覆盖一些边 //预先加灌法费用流
- 支持Linux分区移动的,Linux怎样支持2T以上大硬盘分区
- rfid sim卡 android,手机专用SIM卡的非接触移动支付技术标准之争:NFC vs RFID
- 【吐血整理,建议收藏】B站上有哪些值得反复观看的Java视频教程?
- 机器学习-UCI数据库
- 使用bootstrap图片上传插件(fileInput)springmvc实现图片上传全流程
- 【博学谷学习记录】超强总结,用心分享丨一款钻戒网站的html、css
- 威联通使用Typecho搭建博客
- 修改WINVER、_WIN32_WINNT和_MSC_VER
- 如何批量修改文件名、照片文件名
- 小数输出最简分数c语言,小数化成最简式分数