关于global和nonlocal那点事!!!

2024-06-09 09:04
文章标签 那点 global nonlocal

本文主要是介绍关于global和nonlocal那点事!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

函数的作用域

访问一个变量时,Python 会按照 LEGB 的顺序进行查找。

  • L(Local):局部作用域。包括函数内部定义的变量和参数。在函数内部最先进行变量查找。
  • E(Enclosing):嵌套函数的父函数的作用域。如果在当前函数内部找不到变量,就会向上一层嵌套的函数中查找。
  • G(Global):全局作用域。在模块层次定义的变量,对于整个模块都是可见的。
  • B(Built-in):内置作用域。包括 Python 的内置函数和异常。

当然全局变量也不易太多,容易造成全局变量污染,以及对内存造成压力。

global和nonlocal两个关键字

global是告诉函数这个变量是全局的变量,不是我函数里的变量,就直接找LEGB中的G了。
而nonlocal的使用前提是必须要有函数的嵌套,告诉函数这个变量不是local的变量,所以就在LEGB中的E中找变量。且只能在E中找,不论几层嵌套。

在模块中定义的叫做全局变量,可以说:函数中定义的一定不是全局变量,除非使用了global关键字

若有错误与不足请指出,关注DPT一起进步吧!!!

这篇关于关于global和nonlocal那点事!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044752

相关文章

编译和链接那点事下

http://www.0xffffff.org/?p=357 上回书我们说到了链接以前,今天我们来研究最后的链接问题。         链接这个话题延伸之后完全可以跑到九霄云外去,为了避免本文牵扯到过多的话题导致言之泛泛,我们先设定本文涉及的范围。我们今天讨论只链接进行的大致步骤及其规则、静态链接库与动态链接库的创建和使用这两大块的问题。至于可执行文件的加载、可执行文件的运行时

编译和链接那点事上

http://www.0xffffff.org/?p=323  有位学弟想让我说说编译和链接的简单过程,我觉得几句话简单说的话也没什么意思,索性写篇博文稍微详细的解释一下吧。其实详细的流程在经典的《Linkers and Loaders》和《深入理解计算机系统》中均有描述,也有国产的诸如《程序员的自我修养——链接、装载与库》等大牛著作。不过,我想大家恐怕很难有足够的时间去研读这些厚如

关于OceanBase MySQL 模式中全局索引 global index 的常见问题

在OceanBase的问答区和开源社区钉钉群聊中,时常会有关于全局索引 global index的诸多提问,因此,借这篇博客,针对其中一些普遍出现的问题进行简要的解答。 什么是 global index ? 由于 MySQL 不具备 global index 的概念,因此这一问题会经常被社区版用户提及。就在前几天,就要人询问下面这个语法的意义。 create table part_tes

$GLOBALS与global区别 变量销毁机制

代码一: <?php$var1 = 1;function test1(){global $var1; #等价于 $var1 = &$GLOBALS['var1']; 这里的$var1跟外面的$var1是不同的指针,但指向同样的数据unset($var1); #当你unset一个引用,只是断开了变量名和变量内容之间的绑定,这并不意味着变量内容被销毁了.echo $var1; #P

【matlab】global的用法

>> help globalglobal - Declare global variables 声明全局变量This MATLAB function defines X, Y, and Z as global in scope. %此函数定义X,Y,Z为全局global X Y Zglobal 的参考页另请参阅 clear, isglobal, who名为 global 的其他函数mbc/Gl

【UML建模】时序图的那点事

【UML建模】时序图的那点事 开篇词:干货篇:1.概述2.时序图的组成元素2.1角色(Actor):2.2生命线(Lifeline):2.3消息(Message):2.4激活条(Activation Bar):2.5时间标线(Time Axis):2.6组合片段(Combined Fragment):2.7注释(Note): 3.绘制步骤‌4. ‌注意事项‌:5.总结 我是杰叔叔,一名沪漂

安卓学习第一弹-关于ListView的那点事

ListView之手动的简单老虎机 如何使用listview: 第一步:在布局文件总声明ListView <ListView android:id="@+id/lv"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="match_parent"></ListView

Objective-C总Runtime的那点事儿(一)消息机制

最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题。当然还有一些其他问题也几乎必问,例 如:RunLoop,Block,内存管理等。其他的问题如果有机会我会在其他文章中介绍。本篇文章主要介绍RunTime。 RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪

NLP-2015:Luong NMT模型【Attention类型:Global Attention、Local Attention(实践中很少用)】

《原始论文:Effective Approaches to Attention-based Neural Machine Translation》 在实际应用中,全局注意力机制比局部注意力机制有着更广泛的应用,因为局部注意力机制需要预测一个位置向量 p t p_t pt​,而这个位置向量的预测并不是非常准确的,会影响对齐向量的准确率。同时,在处理不是很长的源端句子时,相比于全局注意力并没有减少

关于分布式数据库缓存设计的那点事和实践

目录 案例 【题目】 【问题 1】(9 分) 【问题 2】(8 分) 【问题 3】(8 分) 【答案】 【问题 1】答案 【问题 2】解析 【问题 3】解析 相关推荐 案例         阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题 1 至问题 3。 【题目】         某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速