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

名称空间与作用域

时间:2018-11-18 13:08:19      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:内存   def   color   临时   特点   绑定   names   失效   就是   

一 名称空间相关

1.名称空间Namespace:指的就是存放名字与值内存地址绑定关系的地方(内存空间)

x= 1

2.名称空间分为三大类

内置名称空间:存放的是python解释器自带的名字

产生:python解释器的启动则产生

销毁:python解释器关闭则销毁

 

全局名称空间:在顶级定义的名字

x=1

if True:

y=2

while True:

  while True:

     while  True:

                z=3

def func():

pass

 

产生:执行python程序时产生

销毁:python程序执行完毕后则销毁

局部名称空间:在函数内定义的名字

def foo():

m=100

foo()

产生:在函数调用时临时产生

销毁:在函数调用完毕后则销毁

 

三种名称空间的产生的先后顺序:内置>全局>局部

查找名字的顺序:从当前位置往外一层一层查找

如果当前在局部名称空间:局部->全局->内置

如果当前在全局名称空间:全局->内置

# # len=111
# # def foo():
# # # len=222
# # print(len)
# # len=111
# # foo()
#
#
# x=0
# def f1():
# x=1
# def f2():
# x=2
# def f3():
# x=3
# print(x)
# f3()
# f2()
# f1()
# #
#
# def foo1():
# def foo2():
# def foo3():
# print(x)

二.作用域:指的是作用范围

全局作用域:包含内置与全局名称空间的名字

特点:全局存活,全局有效

局部作用域:包含局部名称空间的名字

特点:临时存活,局部有效

全局作用域:包含的是内置名称空间与全局名称空间的名字

特点

1.在任何位置都能访问的到

2.该范围内地名字会伴随程序整个生命周期

局部作用域:包含的是局部名称空间的名字

特点:

1.只能在函数内使用

2.调用函数时生效,调用结束失效

!!!!!!重点:作用域关系是在函数定义阶段就已经固定死了.与调用位置无关

# 示范一:/
def f1():
print(xxx)
xxx=111

def f2():
xxx=222
f1()

f2()
#
# 示范二:
# xxx=111
# yyy=333
# def f1():
# xxx=222
# print(xxx)
# # xxx=222
# yyy=222
# print(yyy)
#
# f1()

 

名称空间与作用域

标签:内存   def   color   临时   特点   绑定   names   失效   就是   

原文地址:https://www.cnblogs.com/lujiachengdelu/p/9977503.html

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