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

相关文章
|
15天前
|
机器学习/深度学习 存储 Python
|
1月前
|
Python
解决GNURadio自定义Python OOT块-导入块时报错问题
解决GNURadio自定义Python OOT块-导入块时报错问题
29 0
|
1月前
|
网络协议 Python
python中socket模块的导入和使用基础
【4月更文挑战第3天】Python的`socket`模块是网络编程的基础,用于创建套接字、绑定地址和端口、监听连接及数据传输。首先,使用`import socket`导入模块。接着,通过`socket.socket()`创建套接字,指定地址族(如`AF_INET`)和类型(如`SOCK_STREAM`)。然后,使用`bind()`方法绑定地址和端口,`listen()`方法监听连接。服务器端通过`accept()`接受连接,`recv()`接收数据,`send()`发送响应。客户端则用`connect()`连接服务器,`send()`发送数据,`recv()`接收响应。
|
2月前
|
Python 人工智能 数据可视化
Python模块与包(八)
Python模块与包(八)
18 0
Python模块与包(八)
|
4天前
|
Python
python导入错误(ImportError)
【5月更文挑战第2天】python导入错误(ImportError)
15 1
|
5天前
|
Python
在Python中快捷引入缺失包的技巧和实践
在Python中快捷引入缺失包的技巧和实践
11 0
|
5天前
|
程序员 Linux C++
Python中的WinForms类桌面应用程序开发
Python中的WinForms类桌面应用程序开发
22 4
|
9天前
|
域名解析 JSON API
Python小工具包
【5月更文挑战第2天】构建了一个Python小工具包,包含获取IP、域名解析、JSON格式化和时间戳转换的函数。通过`get_ip_address`和`resolve_domain`实现网络任务,`format_json`用于美化JSON数据,`timestamp_to_datetime`转换时间戳。这些函数可提高开发效率,易于整合到项目中,展现Python的简洁和灵活性。
19 1
Python小工具包
|
12天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver
|
17天前
|
运维 Shell Python
第九章 Python自定义模块及导入方法
第九章 Python自定义模块及导入方法