Python中的变量和作用域详解

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 "", line 1, in

File "", 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中的变量和作用域详解,

最新文章

  1. iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)
  2. {"读取 XML 数据时,超出最大名称表字符计数配额(16384)。。。。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxNameTableCharCount 属性,。。
  3. 自动存储管理 ASM (转)
  4. visio2007使用记录
  5. Windows下如何安装Python的第三方库
  6. log4j.properties配置详解(转)
  7. jacob如何获取word文档的页码
  8. Web服务器(Apache)虚拟主机的配置
  9. HDU 4082 Hou Yi's secret(暴力)
  10. IIS URL Rewrite Module防盗链规则配置方法
  11. POI单元格添加公式以及读取公式结果的值
  12. Codeforce A. Fair Game
  13. spring配置datasource三种方式及具体信息
  14. String的charAt(int index)可用于遍历一个字符串的所有字符
  15. Tenka 1 Computer Contest C-Align
  16. Windows激活客户端 已停止工作
  17. VIM for C++ 一键安装配置
  18. Spark机器学习(9):FPGrowth算法
  19. HDU 2256 Problem of Precision(矩阵)
  20. C++关于sort和priority_queue的运算符重载

热门文章

  1. java 如何读取src根目录下的属性文件
  2. SSM框架中使用日志框架
  3. itop4412编译内核时出现“recipe for target 'arch/arm/mach-exynos/cpu-exynos4.o' failed”的解决方法
  4. Number Of Permutations
  5. Android_(控件)使用AlertDialog实现点击Button显示出多选框
  6. HDU 5884 Sort ——(K叉哈夫曼树)
  7. java jsp基础介绍
  8. [心得]暑假DAY 5
  9. LeetCode 88. 合并两个有序数组(Merge Sorted Array)
  10. 静态化-VeloCity