模块
容器:是对数据的封装,包括字典,列表,元组,字符串等
函数:对语句的封装
类:对方法和属性的封装(函数+数据)
模块:就是程序,任何.py结尾的都是一个独立的模块
导入模块:
1.import 模块名
2.from 模块名 import 函数名
非常不推荐这种方法,会使得命名空间的优势消失
3.import 模块名 as 新名字 这是最好的,当名字太长时可以为模块名起个新名字
模块的作用:
1.封装python的代码,可以有组织有纪律的将代码封装起来,尤其当代码很多时
2.实现代码的重用
if __name__ == '__main__'
这句话使得模块被导入后,而不会运行模块中的测试函数。只有当某个模块作为主程序被运行时,它的name是‘main’,如果只是将某个模块进行 import,它的你ame是模块名,而不会是'main'
搜索路径
python在import某个模块时,有自己的搜索路径,可以通过sys.path查看。一般来说,模块都存放在site-packages文件夹下。如果需要导入自己的某个路径下的某个模块,可以sys.path.append('your path')。因为sys.path是个列表
包(package)
大型的python软件系统,可能有成千上万个python模块很正常,只用模块来定义python的功能性还不够,因为如果把所有模块放在一个文件夹里面会非常乱非常糟糕,而且还存在命名冲突的可能。
包相当于是将python的功能模块分门别类的放在不同的文件夹,然后将文件夹的位置告诉python
创建包的步骤:
1.创建一个文件夹,用于存放相关的模块,文件夹的名字就是包的名字
2.在文件夹中创建一个__init__.py的模块文件,内容可以为空
3.将相关的文件放到文件夹中
导入时,import 包名.模块名 as 别名
python:
python是自己带着电池的语言(python标准库),设计哲学: 优雅,明确和简单
用一种方法,最好是只有一种方法来做一件事
能使用模块来完成相应的功能,就一定要用模块
PEP: Python Enhancement Proposals的缩写,翻译过来就是Python增强建议书的意思。它是用来规范与定义Python的各种加强与延伸功能的技术规格,好让Python开发社区能有共同遵循的依据。
如何快速查找并使用一个新的module
可以先在python doc里面搜索想要查询的module,然后通过__doc__查看模块的基本描述
然后直接在idle上import,并运行__doc__。比如:
但是这样格式太乱,通过 print(timeit.__doc__) 格式会好很多
然后通过dir(module)查看这个模块里面定义的变量和函数
不过这个函数提供的属性比较多,如果想要得到我们比较关注的属性,通过__all__进行过滤
根据过滤得到的以及上面的说明,可以看到,这个模块有一个Timer类以及三个接口函数
注意
不是所有的模块有__all__这个过滤属性,过滤掉的是不希望外界要调用的
__file__属性指明了模块代码存在的位置