名称空间与作用域
Posted lujiachengdelu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了名称空间与作用域相关的知识,希望对你有一定的参考价值。
一 名称空间相关
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()
以上是关于名称空间与作用域的主要内容,如果未能解决你的问题,请参考以下文章