python基础-模块详解
一、python模块化简介
模块(moudle)
在python中,一个文件(以“.py为后缀名)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。模块让你能够有逻辑地组织你的 Python 代码段。
模块化的好处:
- 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量等,模块里也能包含可执行的代码。
- 一个模块编写完毕之后,其他模块可直接调用;
- 避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,
== 注意:==模块名要符号标识符的规范
模块的三种来源:
①标准库中的
② 第三方的
③自定义的
为什么要用模块:
① 方便开发
② 方便维护
③ 模块可以复用!
二、模块的创建及引入
模块的引入:
在一个模块中引入外部模块
① import 模块名 (模块名,就是python文件的名字,注意不要py)
② import 模块名 as 模块别名
- 可以引入同一个模块多次,但是模块的实例只会创建一个
- import可以在程序的任意位置调用,但是一般情况下,import语句都会统一写在程序的开头
- 在每一个模块内部都有一个__name__属性,通过这个属性可以获取到模块的名字
- __name__属性值为 __main__的模块是主模块,一个程序中只会有一个主模块
主模块就是我们直接通过 python 执行的模块
import test_module as test
# import m
# 访问模块中的变量:模块名.变量名
## print(m.a , m.b)
# # m.test2()
# p = m.Person()
# print(p.name)
def test2():
print('这是主模块中的test2')
# 也可以只引入模块中的部分内容
# 语法 from 模块名 import 变量,变量....
# from m import Person
# from m import test
# from m import Person,test
# from m import * # 引入到模块中所有内容,一般不会使用
# p1 = Person()
# print(p1)
# test()
# test2()
# 也可以为引入的变量使用别名
# 语法:from 模块名 import 变量 as 别名
# from m import test2 as new_test2
# test2()
# new_test2()
from m import *
# print(_c)
# import xxx
# import xxx as yyy
# from xxx import yyy , zzz , fff
# from xxx import *
# from xxx import yyy as zz
三、包
包 Package:包也是一个模块
当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用到包
普通的模块就是一个py文件,而包是一个文件夹
包中必须要一个一个 __init__.py 这个文件,这个文件中可以包含有包中的主要内容
补充说明:
__pycache__ 是模块的缓存文件
py代码在执行前,需要被解析器先转换为机器码,然后再执行
所以我们在使用模块(包)时,也需要将模块的代码先转换为机器码然后再交由计算机执行
而为了提高程序运行的性能,python会在编译过一次以后,将代码保存到一个缓存文件中
这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可
四、python标准库
为了实现开箱即用的思想,Python中为我们提供了一个模块的标准库
在这个标准库中,有很多很强大的模块我们可以直接使用,
并且标准库会随Python的安装一同安装
# 常用举例
1. pprint 模块它给我们提供了一个方法 pprint() 该方法可以用来对打印的数据做简单的格式化。
2. sys模块,它里面提供了一些变量和函数,使我们可以获取到Python解析器的信息或者通过函数来操作Python解析器
引入sys模块
import pprint
import sys
sys.argv
获取执行代码时,命令行中所包含的参数
该属性是一个列表,列表中保存了当前命令的所有参数
print(sys.argv)
sys.modules
获取当前程序中引入的所有模块
modules是一个字典,字典的key是模块的名字,字典的value是模块对象
pprint.pprint(sys.modules)
sys.path
他是一个列表,列表中保存的是模块的搜索路径
pprint.pprint(sys.path)
sys.platform
表示当前Python运行的平台
print(sys.platform)
sys.exit()
函数用来退出程序
sys.exit('程序出现异常,结束!')
print('hello')
os 模块让我们可以对操作系统进行访问
import os
os.environ
通过这个属性可以获取到系统的环境变量
pprint.pprint(os.environ['path'])
os.system()
可以用来执行操作系统的名字
os.system('dir')
os.system('notepad')