《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语言书籍。

相关文章
|
3月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
294 1
|
3月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
368 1
|
4月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
337 102
|
4月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
291 103
|
4月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
214 82
|
8月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
860 20
|
3月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
197 4
|
5月前
|
数据处理 开发工具 开发者
requirement.txt 管理python包依赖
在 Python 项目中,`requirements.txt` 用于记录依赖库及其版本,便于环境复现。本文介绍了多种生成该文件的方法:基础方法使用 `pip freeze`,进阶方法使用 `pipreqs`,专业方法使用 `poetry` 或 `pipenv`,以及手动维护方式。每种方法适用不同场景,涵盖从简单导出到复杂依赖管理,并提供常见问题的解决方案,帮助开发者高效生成精准的依赖列表,确保项目环境一致性。
1731 4
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
496 7

推荐镜像

更多