模块2-2 模块基础

模块介绍

 

什么是模块

在Python中,一个.py文件就可以称之为一个模块(Module)

 

模块的好处

  1. 最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
  2. 使用模块还可以避免函数名和变量名冲突。每个模块有独立的命名空间,因此相同名字的函数和变量完全可以分别存在不同的模块中,所以,我们自己在编写模块时,不必考虑名字会与其他模块冲突

 

模块的分类

 

导入方式

import os,sys

from os import rename,path

from asyncio.events import get_event_loop_policy

from asyncio.events import get_event_loop_policy as get_event

from os import * (一般不推荐使用)

 

 

自定义模块

sys.path查询到的就是模块查找的路径

我们自己创建的模块若想在任何地方都能调用,那就得确保你的模块文件至少在模块路径的查找列表中。我们一般把自己写的模块放在一个带有"site-packages"字样的目录里,我们从网上下载安装的各种第三方的模块一般都放在这个目录。

 

第三方模块

python setup.py install

pip3 install paramiko

 

指定安装源(—trusted-host 得加上,是通过网站https安全验证用的)

pip install -i http://pypi.douban.com/simple/ alex_sayhi --trusted-host pypi.douban.com

 

 

常用第三方模块

 

OS&sys

 

 

时间处理模块

 

 

time模块一般用于时间关系转换(时间戳、时间元组struct_time、格式字符串)

 

 

 

datatime模块一般用于时间的运算

 

 

 

random随机数

>>> random.randrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random.randint(1,10) #返回1-10之间的一个随机数,包括10 >>> random.randrange(0, 100, 2) #随机选取0到100间的偶数 >>> random.random() #返回一个随机浮点数 >>> random.choice('abce3#$@1') #返回一个给定数据集合中的随机字符 >>> random.sample('abcdefghij',3) #从多个字符中选取特定数量的字符

 

pickle和json序列化

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes。

dumps:将数据通过特殊的形式转换位只有python语言认识的字符串

dump:将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件

loads:转换为数据

load:从文件里加载

 

方法和pickle基本一致

dumps:将数据通过特殊的形式转换位只有python语言认识的字符串

dump:将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件

loads:转换为数据

load:从文件里加载

 

pickle

只支持python语言

支持py里的所有数据类型

 

json

所有语言都支出

只支持常规数据类型,str,int.dict,set,list,touple

 

hashlib加密

 

Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值.也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系

 

MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位的散列值(hash value),用于确保信息传输完整一致。MD5的前身有MD2、MD3和MD4。

输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);

不同的输入得到的不同的结果(唯一性);

压缩性:任意长度的数据,算出的MD5值的长度都是固定的

容易计算:从原数据计算出MD5值很容易

抗修改性:对原数据进行任何改动,修改一个字节生成的MD5值区别也会很大

强抗碰撞:已知原数据和MD5,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5不可逆的原因是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。

  1. 防止篡改(一致性校验)
  2. 防止看到明文(加密)
  3. 防止抵赖(数字签名)

 

sha256应用举例:

 

说明,多次update后,计算得到的hash值,是一个累加的值

 

 

文件copy shutil 模块

 

正则表达式re模块

 

 

 

 

logging模块

 

日志级别

 

 

日志格式

举例

import logging logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') logging.warning('is when this event was logged.') #输出 12/12/2010 11:46:36 AM is when this event was logged.

 

日志模块的组件

 

他们的关系:

 

 

 

 

 

 

posted @ 2020-02-10 14:10  python初学者小武  阅读(164)  评论(0)    收藏  举报