模块:
1、模块就是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块。
2、模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。
3、若你需要在某个py文件中使用其他文件中的函数或类,则需要导入对应的模块,就可重用这些函数和变量。
模块的引入
import语句:import.模块名
语法:
importmodule1,module2
例1:
importrandom
Fruit=random.choice(['apple','pear','banana'])
print(Fruit)
fromimport语句:
语法:
frommodnameimportname1[,name2[,...nameN]]
例2:
fromrandomimportchoice
Fruit=choice(['apple','pear','banana'])
print(Fruit)
包:
1、包其实可以理解为文件夹,这个文件夹下面放着很多模块。(模块其实就是你写的那些.py文件)包其实的作用就是将代码文件给整合在一个文件夹下面,方便调用和管理。
2、包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在__init__.py文件,该文件的内容可以为空。__init__.py用于标识当前文件夹是一个包。
3、包的命名和文件夹命名一样,不过还是那句话,不要用中文。那Python如何识别普通的文件夹与包呢?包有一个标志文件,叫做__init__.py,假如一个文件夹下面有这个模块(文件),那么Python就会认为这个文件夹是一个包。
4、在调用包中的模块后,你会发现在包的文件夹下生成了一个文件夹__pycache__,不需要理会它,是用于加快Python执行速度用的。
搜索路径:
python模块的导入需要一个路径搜索的过程。当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
例3:查看python的搜索路径
importsys
print(sys.path)
"""
['F:\Pycharm_project\Py_Demo\demo','F:\Pycharm_project\Py_Demo',(自定义路径)
'C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python35',
'F:\Pycharm_project\Py_Demo\venv','F:\Pycharm_project\Py_Demo\venv\lib\site-packages',
'F:\Pycharm_project\Py_Demo\venv\lib\site-packages\pip-10.0.1-py3.5.egg',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages',
若导入的模块没有在这些搜索路径下就会报错
"""
导入包中的函数
from包名.模块名import函数名(若包名没有在默认搜索路径下,则还需要加上其路径)
fromselenium.webdriver.commonimportutils
模块A:
#包名称为Module下名称为Class_Add的模块下的类A
classA:
def__init__(self,xx,yy):
self.x=xx
self.y=yy
defadd(self):
print("x和y的和为:%d"%(self.x+self.y))
文件B:
fromModule.Class_AddimportA
#不重写父类的__init__方法
a=A(2,3)
a.add()
总结:
容器:例如列表、元组、字符串、字典等,这些是对数据的封装
函数:是对语句的封装
类:是对方法和属性的封装,也就是对函数和数据的封装
模块:模块就是程序,就是平常写的任意代码,保存的每一个.py结尾的文件都是一个独立的模块(模块的名字就是py文件的名字)
包:方便管理多个模块