在编程语言中,一般在语法上都支持代码模块化功能,使之降低耦合度和功能重用,python同样也支持。在python中,模块是以一个python文件
为单位加以封装,并支持以下2种常方式,供第三方使用模块成员。(下面分别说明时,我们假设存在以下python源文
件:main.py,logic.py,model.py且下面提到的当前全局空间是对应main.py)
一、import用法
我们可以通过以下代码导入模块至当前全局空间中(可以通过globals()查看)
import logic,model
使用上面的方法导入,在需要使用该模块内的成员(变量,方法,类...)时,需要从模块名出发直到被使用的成员,比如:logic.test()。我们可以把当前的全局空间布局假想成下图:
|...........| |.............| |.............|
|...........| |.............| |.............|
|...........| |.............| |.............|
|test | <---------|logic | |.............|
|...........| |model |-------> |.............|
|...........| |.............| |.............|
|...........| |.............| |.............|
(module:logic) (module:main) (module:logic)
通过import语句,将需要导入的模块在当前全局空间中添加一个标识(logic),它引用一个名叫logic的module。
二、from ... import ...用法
我们可以通过以下代码导入模块至当前全局空间中(可以通过globals()查看)
from logic import * 或者 from logic import test
from model import *或者 from model import send
使用上面的方法导入,在需要使用该模块内的成员(变量,方法)时,可以直接使用该模块中的成员,比如:test()。我们可以把当前的全局空间布局假想成下图:
|.............|
|.............|
|.............|
|test |
|send |
|.............|
|.............|
(module:main)
通过from ... import ...语句,将需要导入的模块成员直接复制一份成员标识至当前全局空间中,从而我们可以直接使用。
三、巧妙使用__all__内部变量
在本文之前,描叙了如何使用第三方模块内的成员,其中from ... import ...方式直接将模块成员复制到当前全局空间中,我们可以做如下假设:
在一个python源文件中引入多个模块,而被引入的模块中有成员重名现象,这样就会根据from ... import ...
的先后顺序相应执行,这样就会出现后导入成员的覆盖之前导入的,从而导致导入的成员不是我们想要的结果或者导致当前全局空间导入的成员出现冗余。
对于上述的问题,我们可以通过python的一个内部特殊的变量解决,如下这样编写:
__all__ = ["...","..."]#...表示需要导出的成员,这样就可以控制哪些成员在被导入时能使用的或被复制到导入的全局空间中。
分享到:
相关推荐
包含要安装media的各个模块的安装包,并附加安装的步骤。
2022/3/6 3.1 matplotlib...导入matplotlib及相关模块 创建画布与创建子图 设置绘图内容 调用plt.plot函数进行绘图 保存与展示图形 1.导入matplotlib及相关模块 In [ ]: import numpy as np import matplotlib.pyplot
2022/3/14 时间序列实例 参考: /qq_33361618/article/details/82804912 Python数据处理(三)——美国西雅图自行车流量可视化 /u/4579171/blog/4551295 Pandas学习笔记之时间序列...In [ ]: #导入模块 import pandas a
本资源面向是针对python入门到实践习题书的习题的python实现, 从打印开始,到基本的元组,字典,列表,常用函数,模块库,文件I/O,异常处理的使用。 其中包括python的基本语法结构的练习,条件,循环,嵌套,导入...
In [ ]: # 引入相关模块 import numpy as np # pandas和numpy 常常结合在一起使用,导入numpy库 import pandas as pd # 导入pandas库 print (pd.__version__) # 打印pandas版本信息 4.11.1 缺失值处理 关于缺失值 ...
2022/3/6 3.1 matplotlib...导入matplotlib及相关模块 创建画布与创建子图 设置绘图内容 调用plt.plot函数进行绘图 保存与展示图形 1.导入matplotlib及相关模块 In [ ]: import numpy as np import matplotlib.pyplot
2022/3/6 4.1 pandas数据结构 ...In [ ]: # 引入相关模块 import numpy as np # pandas和numpy 常常结合在一起使用,导入numpy库 import pandas as pd # 导入pandas库 print (pd.__version__) # 打
2022/3/6 4.3 pandas读写文件 In [ ]: # 引入相关模块 import numpy as np # pandas和numpy 常常结合在一起使用,导入numpy库 import pandas as pd # 导入...file:///D:/Python39/envs/pydata/教材配套代码/模块四
通过学习Python的基本语法、数据类型、控制流程和模块导入等内容,你将能够编写简单的Python程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够利用Python解决实际问题,并享受到编程的乐趣。祝你在学习Python的...
timeit 模块是 Python 标准库中的模块,无需安装,直接导入就可以使用。导入时直接 import timeit ,可以使用 timeit() 函数和 repeat() 函数,还有 Timer 类。使用 from timeit import … 时,只能导入 Timer 类...
In [ ]: # 引入相关模块 import numpy as np # pandas和numpy 常常结合在一起使用,导入numpy库 import pandas as pd # 导入pandas库 print (pd.__version__) # 打印pandas版本信息 4.7.1 重新索引 有时我们需要重新...
python入门 单元测试和测试用例 Python标准库中的模块...要为函数编写测试用例,可先导入模块unittest以及要测试的函数,在创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。
3. 函数和模块:定义和调用函数,创建和使用模块,以及模块的导入和使用。 4. 文件操作:读取和写入文件,处理文件内容和路径,以及异常处理。 5. 面向对象编程:类、对象、继承、多态等面向对象编程的概念和实践。 ...
该项目试图在创建Python软件包的所有方面(包括开发过程和软件包分发过程)整合最佳实践。 访问该项目的 (文档)以了解其所有工作原理。 快速开始 要运行该应用程序,请继续使用pip或Docker。 点子 需要Python v...
python入门 单元测试和测试用例 Python标准库中的模块...要为函数编写测试用例,可先导入模块unittest以及要测试的函数,在创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。
要为函数编写测试用例,可先导入模块unittest以及要测试的函数,在创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。 下面test_name_function.py一个只包含一个方法的测试用例,...
要为函数编写测试用例,可先导入模块unittest以及要测试的函数,在创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。 下面test_name_function.py一个只包含一个方法的测试用例,...
(四)组合复用原则(复用的最佳实践) 96 (五)里氏替换(扩展重写,继承后的重写,指导继承的设计) 96 (六)迪米特法则(用父类减少传递数据量,类与类交互的原则) 97 第三章 模块包+函数式编程 98 通用:快捷键 98...
我发现我的学生会从动手实践中受益,实际上,如果没有提供处理数值方法和构建工作流的机会,很难想象教这些主题。 去年,我试图让他们使用原始的FORTRAN可执行文件,即使有支持并提出示例,这也是一场艰苦的战斗。 ...