作用域介绍
python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量;
E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
G:globa,全局变量,就是模块级别定义的变量; B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。
x = int(2.9) # int built-in g_count = 0 # global def outer(): o_count = 1 # enclosing def inner(): i_count = 2 # local
当然,local和enclosing是相对的,enclosing变量相对上层来说也是local。
#定义变量a >>> a = 0 >>> print a 0 #定义函数p() >>> def p(): ... print a ... >>> p() 0 #定义函数p2() >>> def p2(): ... print a ... a = 3 ... print a ... >>> p2() # 运行出错,外部变量a先被引用,不能重新赋值 Traceback (most recent call last): File "<interactive input>", line 1, in <module> File "<interactive input>", line 2, in p2 UnboundLocalError: local variable 'a' referenced before assignment #定义函数p3() >>> def p3(): ... a = 3 # 不引用直接赋值 ... print a ... >>> p3() 3 >>> print a 0 # 外部变量a并未改变
以上所述是小编给大家介绍的Python中的变量和作用域详解,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Javascript变量的作用域和作用域链详解,包括了Javascript变量的作用域和作用域链详解的使用技巧和注意事项,需要的朋友参考一下 工作这几年,js学的不是很好,正好周末有些闲时间,索性买本《js权威指南》,大名鼎鼎的犀牛书,好好的把js深入的看一看。买过这本书的第一印象就是贼厚,不过后面有一半部分都是参考手册。 一:作用域 说起变量第一个要说到的肯定就是作用域,正是因
本文向大家介绍关于JS变量和作用域详解,包括了关于JS变量和作用域详解的使用技巧和注意事项,需要的朋友参考一下 ECMAScript 变量: 1.基本类型值(简单数据段) 2.引用类型值(可能由过个值构成的对象) → 保存在内存中的对象 ------ 动态属性: 只能给引用型值动态添加新属性,以便将来使用。 ------ 复制变量值 : 基本类型值的复制 → 在变量对象上创建一个新值 → 复制给新
主要内容:Python局部变量,Python全局变量,获取指定作用域范围中的变量所谓 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本节我们只讲解两种变量, 局部变量和 全局变量。 Python局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能
问题内容: 在Python中,if语句内的变量作用域是否在if语句外可见?(来自Java背景,因此有点奇怪) 在以下情况下,首先在if块内部定义名称,但是该变量在if块外部也可见。我原以为会发生错误,但打印出“ joe”。 问题答案: 语句未在Python中定义范围。 循环,语句,/等都不会。 只有模块,函数和类定义范围。 请参阅Python教程中的Python作用域和命名空间。
问题内容: 我试图在某些函数中声明一些全局变量,然后将具有这些函数的文件导入另一个函数。但是,我发现在第二个文件中运行该函数不会创建全局变量。我尝试创建另一个具有相同名称的变量,但是当我打印出该变量时,它将打印出第二个文件的值,而不是全局值 globals.py main.py 这将打印0。如果我没有main,程序将出错(值未定义)。 如果我在函数外部声明,将采用global的值,而不是在中设置的
本文向大家介绍从局部变量和全局变量开始全面解析Python中变量的作用域,包括了从局部变量和全局变量开始全面解析Python中变量的作用域的使用技巧和注意事项,需要的朋友参考一下 理解全局变量和局部变量 1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。例如: 输出结果是123。说明