Python中命名空间和作用域是什么?老男孩Python入门
老男孩IT教育
常见问题
2021年12月8日 15:18
其实所有在Class中的代码,都位于命名空间中,通常称之为类命名空间,编写的程序默认也在全局命名空间内,而类体则处于类命名空间内,归根结底,Python中的命名空间和作用域究竟是什么?快看完本篇文章吧~
其实所有在Class中的代码,都位于命名空间中,通常称之为类命名空间,编写的程序默认也在全局命名空间内,而类体则处于类命名空间内,归根结底,Python中的命名空间和作用域究竟是什么?快看完本篇文章吧~
什么是命名空间?
指从名称到对象的映射,大部分的命名空间都是通过Python字典来实现的,它提供了避免名字冲突的方法,各个命名空间都是独立的,之间没有任何关系,所以一个命名空间中不能有重名的,但不同的命名空间可以重名,这是没有任何影响的。
在这里举一个比较通俗易懂的例子,拿计算机举例吧,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
Python中有三种命名空间:
1、内置名称(built-in names):Python编程语言内置的名称,比如char、abs、BaseException、Exception等;
2、全局名称(global names):模块中定义的名称,记录了模块的变量,包括函数、类、其他导入的模块、模块级的变量和常量;
3、局部名称(local names):函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量(包括类中所定义的);
命名空间的查找顺序是怎样的:
假设我们需要使用变量runoob,那查找顺序为:局部的命名空间->全局命名空间->内置命名空间。
什么是作用域?
是Python程序可以直接访问命名空间的正文区域,在Python中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。
Python中,程序的变量并不是可以随意访问的,访问权限决定于这个变量是在哪里赋值的。
Python的作用域一共有4种,分别是:
L(Local):最内层,包含局部变量,比如一个函数/方法内部;
E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量,比如两个嵌套函数,一个函数(或类)A里面又包含了一个函数B,那对于B中的名称来说,A中的作用域九尾nonlocal。
G(Global):当前脚本的最外层,比如当前模块的全局变量。
B(Built-in):包含了内建的变量/关键字等,最后被搜索。
关于"Python中命名空间和作用域是什么?"的话题,到这里就结束了,老男孩Python开发课程内容主要包括:Python开发基础、Python高级编程与数据库开发、前端开发、WEB框架开发、爬虫开发、全栈项目实战、数据分析、人工智能、自动化运维与开发以及高并发语言GO开发等,独家前沿课程内容,使学员找工作更有优势!
推荐阅读:
【总结】6种让Python程序变慢的坏习惯!老男孩Python培训
