Python模块机制详解:导入、命名空间与__main__判断
本文系统讲解Python模块的核心概念,涵盖模块作为.py文件的定义、三种导入方式(import、from...import、as重命名)的对比与推荐用法。深入解析模块独立命名空间机制,重点阐述利用__name__变量区分主程序与导入模块的方法,避免测试代码意外执行。同时介绍sys.path搜索路径原理及自定义包的创建规范,帮助开发者规范组织代码结构。
一、什么是模块
- 容器用于封装数据
- 函数用于封装语句
- 类用于封装方法和属性
- 模块即程序,具体表现为.py文件
- 导入hello模块,并通过hello命名空间调用其中的hi()函数
(1)创建hello.py模块 请注意,模块文件与被调用的主程序必须位于同一文件夹目录下

使用import导入时,直接书写模块名即可,无需包含.py后缀。例如hello.py文件的模块名即为hello
(2)执行过程

- 命名空间
在Python中,每个模块都拥有独立的命名空间。为了正确调用模块内的函数,必须使用“模块名.函数名”的形式进行访问
二、导入模块
- (1)使用import语句导入模块
以TemperatureConversion模块为例



- (2)使用from 模块名 import 函数名(不推荐使用此方式)
这种方式会将整个命名空间中的内容导入当前环境


- (3)使用import 模块名 as 新名字(推荐使用的标准方式)
三、__name__ == 'main' 的作用
- 文件架构分析

- TemperatureConversion.py文件结构
测试代码直接编写在TemperatureConversion.py文件中

当在calc.py中调用TemperatureConversion模块时,会导致该模块内的测试代码也被执行并打印输出


- 为解决上述问题,需让Python识别当前模块是作为独立程序运行,还是被其他程序导入。因此引入__name__变量进行判断
当文件作为主程序直接运行时,__name__的值为__main__。 当模块被其他文件导入时,tc.__name__返回的是该模块的实际名称。 因此需要修改TemperatureConversion.py文件内容。 判断逻辑如下: 若__name__等于模块名,说明该模块是被导入使用的。 若__name__等于__main__,说明该模块是主程序入口

在calc.py中调用TemperatureConversion模块后的实际运行结果

四、搜索路径机制
- 系统默认的搜索路径顺序
>>> import sys
>>> sys.path
['D:\\python3.3.2\\小甲鱼python\\python程序\\第五十节课\\Temperature',
'D:\\python3.3.2\\Lib\\idlelib', 'C:\\windows\\system32\\python33.zip',
'D:\\python3.3.2\\DLLs', 'D:\\python3.3.2\\lib', 'D:\\python3.3.2',
'D:\\python3.3.2\\lib\\site-packages']
推荐放到:D:\\python3.3.2\\lib\\site-packages
- 手动添加自定义搜索路径的方法
>>> import TemperatureConversion
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import TemperatureConversion
ImportError: No module named 'TemperatureConversion'
>>> import sys
>>> sys.path.append("D:\\python3.3.2\WODE\Temperature")
>>> sys.path
['', 'D:\\python3.3.2\\Lib\\idlelib', 'C:\\windows\\system32\\python33.zip',
'D:\\python3.3.2\\DLLs', 'D:\\python3.3.2\\lib', 'D:\\python3.3.2',
'D:\\python3.3.2\\lib\\site-packages', 'D:\\python3.3.2\\WODE\\Temperature']
>>> import TemperatureConversion
>>> TemperatureConversion.f2c(59)
15.0
- (package)包的概念
(1)创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字; (2)在文件夹中创建一个__init__.py的模块文件,内容可以为空; (3)将相关的模块放入文件夹中
- 示例:制作包并导入包




到此这篇关于Python基础之模块相关知识总结的文章就介绍到这了,更多相关Python模块内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













