命名空间和作用域有何具体区别?

2026-05-16 13:560阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1373个文字,预计阅读时间需要6分钟。

命名空间和作用域有何具体区别?

名称空间+名称空间即将存储名字与对象的映射/绑定关系的地方。对于x=6,Python会请求内存存储对象6,然后将名字x与3的绑定关系存储在名称空间中。del x表示清除该绑定关系。

名称空间

名称空间即存放名字与对象映射/绑定关系的地方。对于x=6,Python会申请内存空间存放对象6,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系。

​ 在程序执行期间最多会存在三种名称空间

内建名称空间

伴随python解释器的启动/关闭而产生/回收,因而是第一个被加载的名称空间,用来存放一些内置的名字,比如内建函数名

全局名称空间

​伴随python文件的开始执行/执行完毕而产生/回收,是第二个被加载的名称空间,文件执行过程中产生的名字都会存放于该名称空间中

import sys #模块名sys

x=1 #变量名x

if x == 1:
y=2 #变量名y

def foo(x): #函数名foo
y=1
def bar():
pass

Class Bar: #类名Bar
pass

局部名称空间

伴随函数的调用/结束而临时产生/回收,函数的形参、函数内定义的名字都会被存放于该名称空间中

def foo(x):
y=3 #调用函数时,才会执行函数代码,名字x和y都存放于该函数的局部名称空间中

​名称空间的加载顺序是:内置名称空间->全局名称空间->局部名称空间,

而查找一个名字,必须从三个名称空间之一找到,查找顺序为:局部名称空间->全局名称空间->内置名称空间。

阅读全文

本文共计1373个文字,预计阅读时间需要6分钟。

命名空间和作用域有何具体区别?

名称空间+名称空间即将存储名字与对象的映射/绑定关系的地方。对于x=6,Python会请求内存存储对象6,然后将名字x与3的绑定关系存储在名称空间中。del x表示清除该绑定关系。

名称空间

名称空间即存放名字与对象映射/绑定关系的地方。对于x=6,Python会申请内存空间存放对象6,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系。

​ 在程序执行期间最多会存在三种名称空间

内建名称空间

伴随python解释器的启动/关闭而产生/回收,因而是第一个被加载的名称空间,用来存放一些内置的名字,比如内建函数名

全局名称空间

​伴随python文件的开始执行/执行完毕而产生/回收,是第二个被加载的名称空间,文件执行过程中产生的名字都会存放于该名称空间中

import sys #模块名sys

x=1 #变量名x

if x == 1:
y=2 #变量名y

def foo(x): #函数名foo
y=1
def bar():
pass

Class Bar: #类名Bar
pass

局部名称空间

伴随函数的调用/结束而临时产生/回收,函数的形参、函数内定义的名字都会被存放于该名称空间中

def foo(x):
y=3 #调用函数时,才会执行函数代码,名字x和y都存放于该函数的局部名称空间中

​名称空间的加载顺序是:内置名称空间->全局名称空间->局部名称空间,

而查找一个名字,必须从三个名称空间之一找到,查找顺序为:局部名称空间->全局名称空间->内置名称空间。

阅读全文