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 + bdef 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 是一个人工智能框架,主要是封装了以上一个库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot快速整合bootstrap-table使用,接口对接

这个表格加持还是不错了,自带了全局搜索,分页,数据导出,卡片视图,等,本次整合添加了数据添加弹窗和编辑数据回显弹窗,附完整页面代码,只需要拿过来替换自己实际的接口即可。 效果图 …

鸿蒙实战开发-如何通过拖动滑块调节应用内字体大小

介绍 本篇Codelab将介绍如何使用基础组件Slider,通过拖动滑块调节应用内字体大小。要求完成以下功能: 实现两个页面的UX:主页面和字体大小调节页面。拖动滑块改变字体大小系数,列表页和调节页面字体大小同步变化。往右拖动滑块字…

ppp验证实验

实际操作图 1,IP划分分配 [r1]interface Serial 4/0/0 [r1-Serial4/0/0]ip add 192.168.1.1 24 [r2]interface Serial 4/0/0 [r2-Serial4/0/0]ip address 192.168.1.2 24 [r2]int Mp-group 0/0/0 [r2-Mp-group0/0/0]ip add 192.168.2.1 24 [r3]int Mp-group 0/…

Xcode Launching “XXX“ is taking longer than expected

文章目录 1.问题2.如何进入iOS DeviceSupport目录3.解决方法4.参考博客 1.问题 LLDB is likely reading from device memory to resolve symbols 2.如何进入iOS DeviceSupport目录 3.解决方法 进入iOS DeviceSupport目录,删除该真机对应的架构文件(比如…

QT作业day3

1、使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…

JMeter 如何并发执行 Python 脚本

要在JMeter中并发执行Python脚本,可以使用Jython脚本或通过调用外部Python脚本的方式实现。 使用Jython脚本并发执行Python脚本的步骤: 1、创建一个线程组:在JMeter界面中,右键点击测试计划,选择 “添加” -> “线…

c语言文件操作(下)

目录 1.文件的随机读写1.1 fseek1.2 ftell1.3 rewind 2. 文件结束的判定2.1 文本文件读取结束的判断2.2 二进制文件读取结束的判断 3. 文件缓冲区 1.文件的随机读写 1.1 fseek 根据⽂件指针的位置和偏移量来定位⽂件指针。 函数原型: int fseek (FILE * stream,…

Springboot+vue的企业质量管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的企业质量管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller&#xff09…

黑马头条day5总结

1、surefire-reports for the individual test results. 借鉴:【已解决】surefire-reports for the individual test results.-CSDN博客 Please refer to D:\javashizhan01\heima-leadnews\heima-leadnews-service\heima-leadnews-article\target\surefire-report…

HTML(二)---【常见的标签使用】

零.前言 本文只介绍常见的标签使用&#xff0c;其中使用的一些HTML专业术语可以在作者的第一篇文章&#xff1a; HTML&#xff08;一&#xff09;---【基础】-CSDN博客中找到。 一.<b>粗体、<i>或<em>斜体 1.定义 粗体、斜体的实现可以在CSS中实现&…

【半结构化访谈法】

文章目录 什么是半结构化访谈法&#xff1f;如何进行半结构化访谈&#xff1f;1. 确定研究目的和主题2. 制定访谈指南3. 进行访谈4. 记录和分析数据5. 报告结果 半结构化访谈法的优缺点优点&#xff1a;缺点&#xff1a; 什么是半结构化访谈法&#xff1f; 半结构化访谈法是一…

Windows 和 Linux 的免费媒体播放器 - SMPlayer

Windows 和 Linux 的免费媒体播放器 - SMPlayer 1. A quick look at SMPlayer2. Downloads2.1. Packages for Ubuntu References https://www.smplayer.info/ 1. A quick look at SMPlayer SMPlayer is a free media player for Windows and Linux with built-in codecs that…

【MySQL】事务日志

事务的隔离性由锁机制实现&#xff0c;事务的原子性、一致性和持久性由redo日志和undo日志实现。 一、redo日志 1.1、为什么需要redo日志 一方面&#xff0c;由于数据从内存写回磁盘需要一定的时间&#xff0c;假如在事务提交后&#xff0c;还没有写回磁盘&#xff0c;数据库…

优雅地处理前端数据转换:自定义封装 translateDict 函数

在前端开发中&#xff0c;我们经常需要处理数据的转换。有时候&#xff0c;我们需要将某种格式的数据转换为另一种格式&#xff0c;这可能涉及到字符串、数组等不同数据类型的转换。在这篇博客中&#xff0c;我们将介绍一个名为 translateDict 的函数&#xff0c;它可以帮助我们…

Rancher(v2.6.3)——Rancher部署Nginx(单机版)

Rancher部署Nginx详细说明文档&#xff1a;https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Rancher/Rancher%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.md#5rancher%E9%83%A8%E7%BD%B2nacos ps&#xff1a;如果觉得作者写的还行&#xff0c;能够满足您的需求&#x…

LeetCode225:用队列实现栈

题目描述 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元…

web前端面试题---->HTML、CSS

一.居中方法 block元素如何居中 margin&#xff1a;0 auto&#xff1b;position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);flex布局&#xff1a; 对父元素操作 &#xff1a; justify-content:center; al…

商城小程序项目实现监控的可观测性最佳实践

前言 微信小程序是一种轻量级的应用程序&#xff0c;用户可以在微信内直接使用&#xff0c;无需下载安装。它具有独立的开发框架和生态系统&#xff0c;支持丰富的功能和交互&#xff0c;包括社交、购物、服务等。 观测云对微信小程序的监控能够实时收集性能指标、错误日志和…

深入理解 C++ 中的 IO 流【iostream篇】

C 中的输入输出流&#xff08;iostream&#xff09;是非常重要的一部分&#xff0c;它们提供了与用户交互以及与文件系统进行数据交换的功能。本文将深入探讨 C 中的 cin 和 cout&#xff0c;介绍它们的使用方法、缓冲区以及常用的成员函数等相关知识。 1. cin 和 cout 的基本…

[蓝桥杯 2019 省 B] 特别数的和

题目描述 小明对数位中含有 22、00、11、99 的数字很感兴趣&#xff08;不包括前导 00&#xff09;&#xff0c;在 11 到 4040 中这样的数包括 11、22、99、1010 至 3232、3939 和 4040&#xff0c;共 2828 个&#xff0c;他们的和是 574574。 请问&#xff0c;在 11 到 &…