---恢复内容开始---
以前经常使用python2.现在很多东西都切换到了python3,发现很多东西还是存在一些差异化的。跨目录import是常用的一种方法,并且有不同的表现形式,新手很容易搞混。有必要这里做个总结,给大家科普一下:
1 同级目录下的调用:
同级目录下的调用比较简单,一般使用场景是不同类的相互调用。不用考虑路径问题,常用的格式是:from file import * 或者 from file import class/function 等。
下面以一个例子作为说明:
程序结构:
➜ dir_test git:(master) ✗ tree
.
├── pycache
│ └── test1.cpython-37.pyc
├── dir1
│ └── test3.py
├── test1.py
└── test2.py
代码:
from test1 import * # the below is also ok #from test1 import dir_test def test_file2(): print("this is test file2") dir_test() test_file2()
2 子目录下的调用:
子目录下的函数调用,正常的情况下,需要包含子目录的,常用的格式如下:form dir1.file import * 或者: from dir1 import file等。
下面以一个例子说明:
➜ dir_test git:(master) ✗ tree
.
├── pycache
│ └── test1.cpython-37.pyc
├── dir1
│ ├── pycache
│ │ └── test3.cpython-37.pyc
│ └── test3.py
├── test1.py
└── test2.py
代码:
from test1 import * # the below is also ok #from test1 import dir_test from dir1.test3 import * def test_file2(): print("this is test file2") dir_test() dir1_test()
3 上级目录下的调用:
上级目录调用要比上两种复杂,这里要用到sys函数,首先要在将要调用的文件下面建一个空文件:init.py 然后在调用这个文件的文件里面添加:sys.path.append("…"),才可以调用成功:
下面是一个例子:文件结构:
➜ dir_test git:(master) ✗ tree
.
├── pycache
│ └── test1.cpython-37.pyc
├── dir1
│ ├── init.py
│ ├── pycache
│ │ ├── init.cpython-37.pyc
│ │ └── test3.cpython-37.pyc
│ └── test3.py
├── dir2
│ └── test4.py
├── test1.py
└── test2.py
代码:
#!python3 import sys sys.path.append("..") from dir1.test3 import * #import dir1
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战