关于Python的import你要知道的种种
常见用法
-
引入模块
import <模块名>
,例如import os
-
引入模块并起别名
import <模块名> as <模块别名>
,例如import numpy as np
-
引入部分函数、变量或类
from <模块> import <要引入的>
,例如from sys import path
解决项目中不同路径关系下py文件相互引用的问题
测试工程目录结构:
$ tree
.
├── module_1
│ ├── test_import_2.py
│ └── test.py
├── module_2
│ ├── test_import_3.py
│ └── test.py
├── test_import_0.py
└── test_import_1.py
2 directories, 6 files
总结起来两句话:
- 若要引用子目录上的py文件(例如
test_import_1.py
要引用module_1
文件夹下的test_import_2.py
),需要将被引文件所在目录升级为为模块,即在被引文件的目录下创建__init__.py
# 此时的module1目录下的目录树为:
├── module_1
│ ├── __init__.py
│ ├── test_import_2.py
│ └── test.py
- 若要引用父目录上的py文件(例如
test_import_2.py
要引用父目录文件夹下的test_import_1.py
),需要将该父目录添加到当前文件的sys.path
中
# 此时的test_import_2.py文件中有:
import sys
sys.path.append("..") #相对路径或绝对路径
举个栗子,module_2
文件夹下的test_import_3.py
要引用module_1
文件夹下的test_import_2.py
- 分析
test_import_3.py
要引用其父目录下另一子目录中的文件(读起来绕但是好理解) - 将父目录添加到
test_import_3.py
的sys.path
中
# in test_import_3.py
import sys
sys.path.append("..")
- 将子目录提升为模块,即在
module_1
文件夹下新建__init__.py
# module目录下的目录树
├── module_1
│ ├── __init__.py
│ ├── test_import_2.py
│ └── test.py
注意:引用进来的变量名为module_1.test_import_2
不同引用方式下引用函数或变量是否为相同? ——> 相同
测试样例:test_import_0.py
引用test_import_1.py
文件中的函数及变量
- test_import_0.py文件
import test_import_1
from test_import_1 import test_function
from test_import_1 import test_var
if __name__ == '__main__':
if test_function == test_import_1.test_function:
print("same function")
else:
print("different function")
if test_var == test_import_1.test_var:
print("same var")
else:
print("different var")
- test_import_1.py文件
def test_function():
return "123"
test_var = "123"
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-01-11 图解正向代理、反向代理、透明代理
2022-01-11 如何利用MobaX同时处理多台虚拟机输入相同命令
2022-01-11 linux ssh执行命令_在Linux上通过SSH在多个节点上并行执行命令的三种方法
2022-01-11 Window、Linux查看本机外网ip
2021-01-11 mysql 5.7 安装 (压缩包方式 .tar.gz)
2019-01-11 C/C++程序CPU问题分析
2012-01-11 List<T>.Contains(T item)判断是否包含的根据是什么