python:包、模块、类

Python项目的组织架构图:

 

python:包、模块、类_第1张图片
 

 

模块:

1、模块就是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块。

2、模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。

3、若你需要在某个py文件中使用其他文件中的函数或类,则需要导入对应的模块,就可重用这些函数和变量。

 

模块的引入

import语句:import.模块名

语法:

import module1,module2

例1:

import random

Fruit = random.choice(['apple', 'pear', 'banana'])

print(Fruit)


from…import语句:

语法:

from modname import name1[, name2[, ... nameN]]

例2:

from random import choice

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的搜索路径

import sys

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 函数名(若包名没有在默认搜索路径下,则还需要加上其路径)


from selenium.webdriver.common import utils 

模块A:

#包名称为Module下名称为Class_Add 的模块下的类A

class A:
    def __init__(self,xx,yy):
        self.x=xx
        self.y=yy
    def add(self):
        print("x和y的和为:%d"%(self.x+self.y))


文件B:

from Module.Class_Add import A
#不重写父类的__init__方法
a=A(2,3)
a.add()


总结:

容器:例如列表、元组、字符串、字典等,这些是对数据的封装

函数:是对语句的封装

类:是对方法和属性的封装,也就是对函数和数据的封装

模块:模块就是程序,就是平常写的任意代码,保存的每一个.py结尾的文件都是一个独立的模块(模块的名字就是py文件的名字)

包:方便管理多个模块

你可能感兴趣的:(python3)