将模块放入包中
模块文件,功能分的比较清晰。文件与文件之间,是通过import这种调用关系。
当我们的项目模块文件特别多的时候,我们还需要将这些模块文件根据功能划分到不同的目录中。
这些放模块文件的目录,python把它们称之为package。
包目录中需要有一个名字为__init__.py的初始化文件,有了它,python才认为这是一个python包。
Python3.3 以后版本的解释器,如果目录只是用来存放模块文件,就不需要一个空的__init__.py文件了。通常都还带着这个初始化文件。
__init__.py可以用着包的初始化文件,里面放一些初始化代码,有独特的作用。
调用模块里的函数。
stockleft,这是一个函数对象。
stock.food.beef 这是一个模块。
库的概念:
如果你写的模块文件里面的函数,实现了通用的功能,经常被其他模块所调用,我们就可以把这些调用的模块文件称之为库。
库是一个抽象的概念,只要某个模块或者一组模块,开发它们的目的就是给其他模块调用的,就可以称之为库。
Python标准库:
Python语言提供了功能丰富的标准库。这些标准库把开发中常用的功能都做好了。
我们可以直接使用它们。
这些标准库里面有一部分叫做内置类型和内置函数。
内置类型和内置函数无需使用import导入,直接可以使用。
内置类型:int float str list tuple等。
内置函数:int str print type len函数等。
还有一些库,需要使用import导入,才能使用。
常见的有sys、os、time、datetime、json等等。
这些库是开发人员帮我们写好了,他们知道我们经常需要哪些代码。
解释器怎么找到模块文件?
首先它在解释器内置模块中寻找是否有XXX。
所谓内置模块,就是内置在Python解释器程序中的模块。它们使用C语言编写的,编译链接在解释器里面。
也就是说他们是解释器的一部分,所以解释器运行时,他们就在解释器里面,无需查找。
- import sys
-
- print(sys.builtin_module_names)
-
- for path in sys.path:
- print(path)
这个sys.path 是一个列表,这个列表里包含了一些路径。
当我们import一个模块的时候,解释器会依次到上面列出的目录下面去寻找。
这里面都是标准库的目录保存的路径。
其中.zip是一个压缩的包的目录文件。
我们自己开发写的模块文件,我们要去导入它的时候,在项目的路径下。
解释器启动的时候,是从根据下面这些规则添加路径到sys.path列表里的。
启动脚本文件所在的目录
当前工作目录
PYTHONPATH环境变量的目录
Python解释器缺省的安装目录
如果我们自己想添加一些目录,作为模块搜索路径:
并且是永久的。
注意的是:模块搜索路径和import后面的路径合起来是一个完整的路径。
了解环境变量很重要,不仅仅是Python编程需要了解它。
例如:os的库:
print(os.__file__)