python之golbal/nonlocal】的更多相关文章

一.关键字 golbal nonlocal 在局部修改全局的变量为什么会报错 count = 0 def func(): count += 1 func() # UnboundLocalError: local variable 'count' referenced before assignment # 解释器认为:如果你在局部作用域对一个变量进行修改了,你在局部作用域已经定义好这个变量了. 解释器认为: 如果你在局部作用域对一个变量进行修改,name你在局部作用域已经定义好这个变量了. 1.…
上一篇中简述了这两个关键字的基本用法: global用于在局部作用于修改或重定义全局变量 nonlocal用于在内部作用域修改或重定义外部变量(全局变量除外) 这只是很浅的理解方式 注意python的特性,变量有mutable和immutable之分,对于mutable变量的,在内部作用域内做修改时完全可以的,不需要上面两个关键字的修饰,比如下面的程序: a = 12li = [1, 2, 3]def g():    b = 11    li[2] = 4   #li变量在内部作用域内被修改了 …
在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local).嵌套作用域(Enclosing function locals).全局作用域(Global).内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则. 然而当在一个函数内部为一个变量赋值时,并不是按照上面所说LEGB规则来首先找到变量,之后为该变量赋值.在Python中,在函数中为一个变量赋值时,有下面这样一条规则: “当在函数中给一个变量名赋值是(而不是在一个表达式中对其进行引用),Pyth…
◆global和nonlocal是Python的两个重要变量作用域关键字 1.global用在全局变量,应用场景: 变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里面重新定义一个变量 并用关键字global修饰. 例如: a=1 def b(): a+=1 print(a) b() 用ide写完这段代码的时候,还没运行就会报红线提示错误,运行之后产生错误,错误内容为:UnboundLocalError: local variable 'a' reference…
nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当前代码块. 这意味着列出的标识符将被解释为全局变量. 尽管自由变量可能指的是全局变量而不被声明为全局变量. global语句中列出的名称不得用于该全局语句之前的文本代码块中. global语句中列出的名称不能定义为形式参数,也不能在 for 循环控制目标.class定义.函数定义.import语句或…
python 中nonloal 关键字用来在函数或其他作用域中使用外层变量(非全局),也可使用global需要在函数外部…
From:http://learnpythonthehardway.org/book/ex37.html 1. with X as Y: pass 1.1 yield 2. exec 2.1 namespace 3. lambda 3.1 map 3.2 map and reduce 4. raise KEYWORD DESCRIPTION EXAMPLE and Logical and. True and False == False as (1) Part of the with-as st…
一,函数名是什么? 函数名是函数的名字,本质:变量,特殊的变量. 函数名()执行此函数 ''' 在函数的执行(调用)时:打散. *可迭代对象(str,tuple,list,dict(key))每一个元素添加到args元组中. **dict 将字典的键值对添加到kwargs字典中. 在函数的定义时: 聚合. *args将所有的位置参数聚合到一个元组中. **kwargs 将所有的关键字参数聚合到一个字典中. ''' #python 2 没有nonlocal 1.单独打印函数名 def func1(…
全局变量: -   在书写中顶格开始: -   一旦定义完毕在整个文件生效: -   在函数内如果定义了同名全局变量名,会“覆盖”掉全局变量: -   在函数中同名的变量,当在函数退出后消失,全局的同名变量恢复: -   如果在函数中想修改外部的全局变量加global关键字: 局部变量 -   在函数.过程中定义的变量 -   只在函数.过程中有效: #在函数中修改外部的全局变量 name="abc" def test1(): global name print("修改前:&…
前几天在做一个简单的界面,单击Radiobutton保存字符串,在一个嵌套函数里面修改外部函数.一直不知道怎么修改,上网查了一下,搜关键字“嵌套函数修改变量”,找了好久,才得以解决. 对于python 3来说 nonlocal: 嵌套函数中内部函数修改外部变量的值 没有加该关键字是不能修改的: def outside(): a = 'a' def inside(): a = 'b' print(a) inside() print(a)outside() b a 加关键字后是这样(不能 nonlo…