Python模块定义、导入机制与__name__用法详解
本文深入解析Python模块的定义与导入方式,涵盖import与from...import语法、同级及跨目录导入技巧,并详细阐述__name__变量在区分直接运行与模块导入时的核心作用,帮助开发者掌握Python模块化管理的核心概念。
本文通过具体实例,详细解析Python中模块的定义、导入方法以及__name__变量的使用场景,旨在为读者提供实用的参考与指导。
- 模块的基本概念
- 模块导入机制
- 模块导入方式
- 模块自导入逻辑
- 同级目录下的导入
- 跨级目录导入策略
- 从内部目录导入外部模块
- 从外部目录导入内部模块
- __name__变量的应用
在Python中,模块可视为存放方法与类的容器。若需使用特定模块中的方法或类,必须首先导入该模块。
需要注意的是,Python内置了丰富的方法与类,部分功能无需额外导入模块即可直接使用。
模块的标准调用格式为:模块名.函数 或 模块名.类。
#函数
import math
print(math.sqrt(3))
#类
import threading
a=threading.Thread()
print(a)
-
常用的模块导入语法包括:
- 使用 import 模块名 语句导入整个模块。
#import 模块名 import math print(math.sqrt(9))- 使用 from...import 语句可从模块中导入指定的部分(如类或方法)。其中,from...import * 表示导入模块内的所有内容。
#from 模块名 import 类名、方法名
from collections import Iterable
print(isinstance("abc",Iterable))
print(isinstance([1,2,3],Iterable))
- 在 from...import 导入时,还可以为导入的部分指定别名,例如:from ... import funcA as fa。
-
模块的自导入机制
Python解释器在查找模块时,遵循以下搜索路径:
首先在当前目录下进行搜索。
其次在环境变量 PYTHONPATH 指定的路径列表中依次查找(可通过 sys.path 查看)。
import sys
print(sys.path)
----------
运行结果:
['J:\\HardWork\\Code\\python',
'J:\\HardWork\\Code\\python',
'I:\\python3\\python36.zip',
'I:\\python3\\DLLs',
'I:\\python3\\lib',
'I:\\python3',
'I:\\python3\\lib\\site-packages']
最后在 Python 安装路径的 lib 库中进行搜索。
-
对于同级目录下的模块,可直接进行导入操作。


-
对于不同级目录的模块,需先将对应目录路径添加到 sys.path 中,然后再执行 import 操作。
-
目录内的模块b导入目录外的模块c
-
具体的目录结构如下:
模块c中的内容示例:
在目录b中导入模块c的方法如下:
import sys,os
print(__file__)##这是当前文件的绝对路径
parent_dir=os.path.dirname(__file__)##获得当前文件的目录
pp_dir=os.path.dirname(parent_dir)
sys.path.append(pp_dir)
# print(sys.path)
import c #要导入c,必须将diff_dir加入sys.path中
-
另一种情况:目录外的模块c导入目录内的模块d
此时的目录结构为:
模块d中的内容示例:
在模块c中导入模块d的代码实现:
from d2 import d
或者采用以下写法:
import d2.d
最终运行结果:
由于Python模块既支持被导入,也支持直接运行,为了区分代码是直接执行还是被导入后执行,引入了 __name__ 变量。
当脚本被直接运行时,__name__ 的值固定为 __main__。
print("import C done")
print(__name__)
if __name__=='__main__':
print("direct run")
---------------
运行结果:
import C done
__main__
direct run
当模块被其他脚本导入时,__name__ 的值等于当前模块的名称。由于此时 __name__ 不等于 __main__,因此不会执行
中的代码块。
import sys,os
# print(__file__)##这是当前文件的绝对路径
parent_dir=os.path.dirname(__file__)##获得当前文件的目录
pp_dir=os.path.dirname(parent_dir)
sys.path.append(pp_dir)
# print(sys.path)
import c #要导入c,必须将diff_dir加入sys.path中
------------------
运行结果:
import C done
c
若对Python其他技巧感兴趣,建议查阅本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》。
希望本文的阐述能对您的Python程序设计工作有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。










