《Abaqus GUI程序开发指南(Python语言)》——2.11 包导入

简介:

本节书摘来自异步社区《Abaqus GUI程序开发指南(Python语言)》一书中的第2章,第2.11节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.11 包导入

前面介绍了模块的导入方法,除了导入一个模块名之外,Python还可以导入指定的目录路径,Python代码的目录就称为包,这类对目录的导入就称为包导入。实际上,包导入是把计算机上的目录变成另一个Python的命名空间,而属性则对应目录中所包含的子目录和模块文件。

包导入对于组织大型系统内的文件会很方便,而且可以简化模块搜索路径的设置,本书第六章“用户自定义GUI应用程序开发指南”中采用了大量的包导入实例。

【语法】包导入的语法与模块导入类似,区别在于包导入时需要指定文件的路径。

import dir1.dir2.module_name 
from dir1.dir2.module_name import function_name

上述语句中的“点号”路径与计算机上的目录路径一致,dir1为一级目录,dir2为dir1中的二级子目录,dir2中包含了一个名为module_name.py的模块文件,同样,该模块文件中定义了名为function_name的函数。

需要注意的是,在使用包导入时,包导入语句所提及路径中的每个目录内都必须有一个init.py文件,否则导入包会失败。init.py文件的作用是将当前文件夹标记为一个包,相当于包的注册文件,init.py的内容可以为空。

读者可以将常用的代码合并到一个包中,通过调用该包内的各个模块来实现代码的重用。图2.2为包、模块和函数三者之间的关系图,每个包内可以包含多个子包或模块,且每一级包内都必须包含init.py文件,另外,每个模块文件内可以定义多个函数。


628ce7105833b4abce7aa14da196f66536a2d486

【实例2.38】包的定义及调用

本实例的源代码存放于随书配套资源chapter22.11中。

按照图2.2所示的组织结构图,在Abaqus的工作目录下,例如D:Temp文件夹内创建一个名为package的文件夹,该文件内创建两个子文件夹(subpackage1和subpackage2)和一个init.py文件,subpackage1内创建一个模块文件module1.py和一个init.py文件,module1.py源代码如下。

def add(x,y): 
  add=x+y 
  print 'the sum of x and y is %f.' % add

然后在subpackage2内创建一个子包subpackage3、一个模块文件module2.py和一个init.py文件,同样,在subpackage3内创建一个模块文件module3.py和一个init.py文件,module3.py源代码如下。

def multiple(x,y): 
  m=x*y 
  print 'the product of x and y is %f.' % m
  return m

上述定义完成后,在Abaqus GUI命令交互行输入以下指令并查看计算结果。

>>> from package.subpackage1.module1 import add 
>>> from package.subpackage2.subpackage3.module3 import multiple 
>>> add(4,5) 
the sum of x and y is 9.000000. 
>>> multiple(4,5) 
the product of x and y is 20.000000. 
20

如果将subpackage1中的init.py文件删除,然后重新执行包导入指令,则会出现以下提示错误。

>>> from package.subpackage1.module1 import add 
ImportError: No module named subpackage1.module1

提示

在Abaqus GUI图形界面开发过程中,将大量运用包导入,尤其是自定义GUI应用程序的开发过程中(详见本书第六章内容),使用包导入可以轻松地找到对应文件,简化文件搜索路径设置,使复杂程序的组织结构更加清晰,提高代码的可读性,同时也便于对代码进行管理。本节仅简要介绍了包导入的概念和使用方法,更多关于包导入的知识请参照其他Python语言书籍。

相关文章
|
30天前
|
XML 关系型数据库 MySQL
python将word(doc或docx)的内容导入mysql数据库
用python先把doc文件转换成docx文件(这一步也可以不要后续会说明),然后读取docx的文件并另存为htm格式的文件(上一步可以直接把doc文件另存为htm),python根据bs4获取p标签里的内容,如果段落中有图片则保存图片。(图片在word文档中的位置可以很好的还原到生成的数据库内容) 我见网上有把docx压缩后解压获取图片的,然后根据在根据xml来读取图片的位置,我觉得比较繁琐。用docx模块读取段落的时候还需要是不是判断段落中有分页等,然而转成htm之后就不用判断那么多直接判断段落里的样式或者图片等就可以了。
21 1
|
1月前
|
Python
python中导入模块/包的几种方式
python中导入模块/包的几种方式
25 0
|
4天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
7天前
|
Python
掌握Python导包技艺:揭秘导包语句的奥秘
掌握Python导包技艺:揭秘导包语句的奥秘
15 0
|
29天前
|
XML 数据采集 数据格式
Python语言的结构化标志语言处理
Python语言的结构化标志语言处理
|
29天前
|
开发者 Python
Python语言的导入系统
Python语言的导入系统
|
1月前
|
程序员 开发者 Python
Python新手常见问题五:如何避免模块导入错误?
在Python编程中,模块的导入是每个开发者必须掌握的基础技能之一。模块化设计让代码更加有序、可复用和易于维护。然而,在实际操作过程中,新手程序员常常会遇到一些关于模块导入的问题,导致程序无法正常运行。本文将探讨几种常见的模块导入场景及容易犯错的操作,并提供相应的解决方案。
26 4
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks常见问题之第三方Python依赖包使用失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
API 开发工具 C++
Python图形用户界面(GUI)编程:大解密
Python图形用户界面(GUI)编程:大解密
56 0
|
1月前
|
网络协议 安全 Linux
Scapy:Python发包收包利器
Scapy:Python发包收包利器
26 0

热门文章

最新文章