Python学习总结(七)模块与包
程序员文章站
2022-07-10 12:20:08
...
一、模块(module)
模块是 python 程序架构的一个核心概念
- 模块 就好比是 工具包,要想使用这个工具包,就需要用关键字import导入
- 每一个以扩展名py结尾的python源代码都是一个模块
- 在模块中定义的 全局变量、函数 都是模块能够提供给外界直接使用的工具
模块的导入
关键字 | 作用 | 备注 |
---|---|---|
import 模块 | 导入指定模块的全部 | 1.如果模块名过长或多个模块具有相同方法名,使用关键字 as 为他们起别名 2.调用模块的方法时需要用模块.方法()或模块.属性或的形式 |
from 模块 import 工具名 | 导入一个模块的部分工具 | 这样导入之后,直接使用工具名对应的函数即可;如果有多个模块具有相同的方法名,使用as为这些同名方法取不同别名 |
as | 为一个变量取别名 | 为模块取别名应该满足大驼峰命名法,例如:import module_1 as Md_1 |
模块的搜索顺序
- 首先在 当前目录 搜索
- 如果当前目录没有搜索到,则进入 系统目录 进行搜索
因此,如果在当前目录下有模块和Python自带的模块同名,则只会使用当前目录下的模块。故在给自己当前目录下的模块起名时,应该避免和系统模块起相同的名字。
__file __
如果使用import导入了一个模块,使用 __file __ 可以查看该模块的路径。ex.
import random
print(random.__file__)
输出:
测试模块语句
当使用import导入一个模块时,模块内所有没有缩进的代码都会被执行。而开发一个模块时一定要对这个模块进行测试,这便形成有如下方法。
使用 __name __ 写测试语句
__ name __ 的特点
- __name __ 用来保存字符串
- 在本模块中它的值恒为 __main __
- 如果一个模块A导入了另一个模块B,那么 模块B.__main __ 值为 "模块B"
因此,测试可以如下进行:
如果是在被导入的模块B中测试该模块(__name __ 值为 __main __),那么执行测试语句。否则不做任何执行即可。
def func():
print("此语句是否会被执行")
if __name__ == "__main__":
func()
print("果然被执行了!")
二、包(package)
包的概念及使用
包是一个包含多个模块的特殊目录,目录下包括一个特殊文件 __init __。
包的导入和导入模块类似,形式:import 包名,只不过想要使用包中的工具,则需要在包的 __init __ 文件下导入此包的模块。
__init __的作用:
将此包下的模块进行导入,在其他地方调用这个包时,以便访问使用这个包的方法。
常见格式:
from . import 模块名
一个例子:
1.test_ 包,目录:__init __.py __test_1 __.py __test_2 __.py
(1) __init __.py
from . import test_1 # 导入模块
from . import test_2
(2)__test_1 __.py
def test_func_1():
print("test_1 被使用")
(3)__test_2 __.py
def test_func_2():
print("test_2 被使用")
2.外部调用
import test_ # 导入test_ 包,此包可供使用的模块放在 __init__ 文件下
test_.test_1.test_func_1()
test_.test_2.test_func_2()
上一篇: Stream 模块学习(七)