- 30
- 0
- 约2.97千字
- 约 4页
- 2021-04-12 发布于天津
- 举报
导入的函数 上面只是最简单的情况,如果文件中定义
导入的函数 上面只是最简单的情况,如果文件中定义
python 模块导入 (import) 问题彻底解决
众所周知,Python既可以导入包(import Package),也
可以导入模块( import module ), package 一般理解为多文件 的模块,它是这样定义的, 如果一个目录下存在” __init__.py” 这个文件, 那么 python 就认为这个目录下的所有文件同属于
个 p ackage (这和 java 的 names pace有点像,但是 java 可
不需要这么个特殊文件) ,如果没有这个文件,那么 python
认为目录下的 py 文件都是不相干的独立模块。但是在子目
录中你可不能这么干,如果子目录中没有”init
录中你可不能这么干,如果子目录中没有”
init__.py ”,那
么该目录下的程序算是白写了,根本没有办法引用。当然,
也不是绝对的, 除非绕个大弯儿:设置当前目录, 然后导入,然后重设当前目录。 比如,程序需要使用test 目录中的模块,而
也不是绝对的, 除非绕个大弯儿:
设置当前目录, 然后导入,
然后重设当前目录。 比如,程序需要使用
test 目录中的模块,
而test目录不是package,你只能这样做:
1: os.chdir(test)
最方便的引入, 当2: import testfuncs 3: os.chdir(..)
最方便的引入, 当
然是同一个目录的模块(除了及其简单的程序,很少有人会 使用这种扁平的目录结构) ,那是想怎么导入就怎么导入。
直接导入即可:比如在主程序中想要使用另一个文件模块中的函数,只需要
直接导入即可:
1: import testfuncs #直接导入模块(也
就是不带扩展名的文件名)2:3: testfuncs.nousefunc()#通过模块的名字引用其中的函数4: from testfuncs import
就是不带扩展名的文件名)
2:
3: testfuncs.nousefunc()
#通过模块的名字引用其中的函数
4: from testfuncs import
nousefunc #导入模块中的函数
5: nousefunc() #直接调用
的是class怎么样呢,实际使用也是差不多的, 不过要多一次
构造class的实例的调用: 1: import testclass #直接导入
模块(也就是不带扩展名的文件名)2:
模块(也就是不带扩展名的文件名)
2:
obj=testclass.TestClass(); #实例化类 3: obj.func1() # 通过模
块的名字引用其中的 class然后才到类的函数,注意类要实例 化 4: from testclass import TestClass #导入模块中的类
6: obj.func1() # 调用函数如5: obj=TestClass(); #实例化类 果都是这种从程序中引入同目录或者子目录的包,那么事情 就简单了,但是如果是同为子目录中的模块,要引入兄弟目 录中的模块或类,要怎么办呢?例如,如下的目录结构:图 中src目录就是程序的顶层目录, 也是包导入的顶层Package
6: obj.func1() # 调用函数如
的方法就是在主程序中(一般位于应用的源程序的根目录
如图中的start.py),把所有下级的目录都缴入的 sys.path中 然后在子目录中的模块中,只要使用完全限定的包名引入其 他子目录中的模块或者类就可以了。然而现实的情况往往不 那么尽如人意, 比如为公用包写的测试程序需要放在 pub/test 目录下,测试目标在 pub/data 目录下,这是不能寄希望与应 用的主程序了, 因为此时不会去运行应用程序。 这种情况下, 启动程序和被引用的包同在一个父目录的子目录中。此时该 怎么办呢,还是老办法,要把父目录(src/pub )和(src/pub/data、
中,然后再用绝对的方式src/pub/test)目录都要加入 sys.path 进行引入(import pub.data.datautil / from pub.data.datautil import DataUtil) 。每一个需要的模块都要这么干,因此,我 特地写了一个函数,来自动的处理这种情况 :import
中,然后再用绝对的方式
为相对
为相对
TestClass;def _prepareRelativeImport(layer=2):
引用做准备,以便下层目录中的模块,相对引用 [本目录]以
及[
及[ 父目录 ]和[ 兄弟目录 ]中的模块。
参数layer,表示引入
到多少层父目录。默认为2-gt;引入本目
您可能关注的文档
- PBL教学法在高职高专院校医学教育中的应用及存在问题-教育文档.docx
- PB倍数模型理论及应用研究.docx
- PCIA泵用于心脏术后疼痛控制的临床疗效观察.docx
- PC机及打印机常见故障问题解决方法分析.docx
- PDF文档无障碍研究.docx
- PE管施工分项工程质量验收表格.docx
- PE聚乙烯管道热熔焊接作业指导书分解.docx
- PhotoshopCS6最新教程word版分析.docx
- Photoshop曲线调整功能.docx
- PHPCMSV9网站数据迁移教程.docx
- 2025至2030中国塑料铺面行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国研磨介质行业运营态势与投资前景调查研究报告.docx
- 初中数学七年级上册 一元一次方程的应用(方案选择)知识清单.docx
- 公司制浆废液回收工岗位工艺安全规程.docx
- 热硫化硅橡胶生产工岗位现场作业安全规程.docx
- 玉雕工安全操作规程.docx
- 2025至2030中国塑料帽行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国数字语音助理行业细分市场及应用领域与趋势展望研究报告.docx
- 丙烯腈-丁二烯-苯乙烯共聚物(ABS)装置操作工岗位安全操作规程.docx
- 初中美术八年级(下册)一版多色版画高阶复习知识清单.docx
原创力文档

文档评论(0)