老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Python中命名空间和作用域是什么?老男孩Python入门

老男孩IT教育

常见问题

2021年12月8日 15:18

其实所有在Class中的代码,都位于命名空间中,通常称之为类命名空间,编写的程序默认也在全局命名空间内,而类体则处于类命名空间内,归根结底,Python中的命名空间和作用域究竟是什么?快看完本篇文章吧~

       其实所有在Class中的代码,都位于命名空间中,通常称之为类命名空间,编写的程序默认也在全局命名空间内,而类体则处于类命名空间内,归根结底,Python中的命名空间和作用域究竟是什么?快看完本篇文章吧~

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培训

  盘点非常欢迎的15个Python库!老男孩Python开发培训

  Python的字典是什么?该如何使用?Python培训

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。