码迷,mamicode.com
首页 > 其他好文 > 详细

函数的作用域和名称空间

时间:2020-07-24 19:08:28      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:函数调用   阶段   调用函数   不能   osi   修改   glob   python解释器   就会   

一、作用域:成型在函数定义阶段,与函数调用无关

全局作用域:内置名称空间与全局名称空间的名字属于全局范围,
      在整个文件的任意位置都能被引用,全局有效
局部作用域:局部名称空间的名字属于局部范围,
      只在函数内部可以被引用,局部有效

二、名称空间

名称空间:存放名字与值的绑定关系(存放名字的地方,三种名称空间,(x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方))

名称空间分为三种:内置名称空间、全局名称空间、局部名称空间

内置名称空间:python解释器自带的名字,python解释器启动就会生成

全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生

局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效

三者的加载顺序:内置名称空间->全局名称空间->局部名称空间

取值:局部名称空间->全局名称空间->内置名称空间, 也就是常说的 LEGB (local --> enclosing --> global --> built_in)

函数内部修改上层的变量(上层内部没有会报错,不能修改全局变量),如果要在函数内部修改全局变量,可以在内部名称前 加上global 声明全局变量

函数的作用域和名称空间

标签:函数调用   阶段   调用函数   不能   osi   修改   glob   python解释器   就会   

原文地址:https://www.cnblogs.com/Teyisang/p/13373155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!