Python程序设计 模块和包

1. 模块和包

1.1 模块:

一个 py 文件,就是一个模块,文件中包括定义的函数和类等信息。

尽管可以 import 多次,实际上模块只导入一次

模块搜索路径内存中已经加载的模块 -> 内置模块 -> sys.path路径(导模块的环境变量)中包含的模块

导入模块

  • 将整个模块导入 import 模块名

  • 导入所有函数 from 模块名 import *

  • 从模块中导入某个函数 from 模块名称 import 函数1(, 函数2...) 也可以是属性

使用区别

import 模块名

form 模块名 import *

调用模块函数(属性)时的格式是 模块.函数属性)

from 模块名 import 函数名(属性名)

可以直接使用,无需添加模块名

1.2 包:

当一个目录内含有 __init__.py 文件时,就可以视该目录为一个包,一个包由多个文件构成。

导入包

  • 导入包名

# import 包名
from xxx import requests
  • 从包里面导入方法
# from 包名 import 方法/对象
from requests import get
  • 从包的文件里面导入对象
# from 包名.文件名 import 方法/对象
from requests.api import get

1.2.1 __init__.py 文件

该文件,可以表示该目录是一个包,内容可以为空,第一次导入包或者是包的任何其他部分,实际就是导入该文件。

因此,我们在该文件中导入需要的模块(别人在导入包的同时,也就导入 __init__.py 文件中的模块),这样在使用时,用户感觉可以将这个包当作模块使用,而不关心其背部结构。

例如:requests 包中的 __init__.py 主要文件内容如下:

from . import utils
from . import packages
from .models import Request, Response, PreparedRequest
from .api import request, get, head, post, patch, put, delete, options
from .sessions import session, Session
from .status_codes import codes
from .exceptions import (
    RequestException, Timeout, URLRequired,
    TooManyRedirects, HTTPError, ConnectionError,
    FileModeWarning, ConnectTimeout, ReadTimeout
)

 其他模块在导入时,就可以简单的使用,不用关心其内部结构(使得导入包 向导入模块一样简单)

1.2.2 特殊变量__all__

__init__.py 不仅仅用来导入模块,其本身也可以加入代码,其中存在特殊变量 __all__ ,该变量是一个列表,列表中以字符串的格式存放变量或者函数,在执行 form 包 import * 时,导入该列表内容。示例:

# filename: a.py
__all__ = ['add']


def add(a, b):
    return a + b


def sub(a, b):
    return a - b
from a impory * 


r = add(1, 2)
print(r)
r = sub(1, 2)
print(r)

1.2.3 相对路径导入

requests 目录结构中,__init__.pyapi.py 在同一目录下,因此在 __init__.py 文件中想要导入 api.py 文件,可以使用相对路径,也就是使用linux系统中的 .(本目录) 和..(上级目录),并且只能在一个目录中使用,不能用于不同目录内

2. 包与框架

2.1 包(库)

python 的包只实现一个单一的功能。例如 random 库只实现了随机函数,re 实现了正则提取的方式,requests 实现了网络请求,lxml 实现了提取网页数据的功能。

2.2 框架

2.2.1 scrapy(爬虫)

实现了一整套的爬虫解决方案。从发送请求(requests),到数据解析(re、xpath、css选择器),再到数据保存(csv、json、pickle)。同时还有非常强的拓展性。支持配置请求中的参数,修改处理数据的方式,以及对接其他的数据存储(msyql、redis、mongodb)。

2.2.2 flask(web 框架)

实现了基本的路由(处理 http 请求)、与模板(html网页)。同时还有支持拓展数据库管理(flask-sqlalchemy)、权限管理(flask-login)、restfull拓展(flask-jwt)。

2.2.3 数据分析

数据分析暂时没有框架,主要由各种库构成。numpy、pandas、matplotlib。同时还有sk-learn、scipy 数据挖掘库

TensorFlow 是一个人工智能框架,主要是封装了以上一个库。

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值