多测师肖sir_高级金牌讲师_python之模块008

python之模块
一、模块的介绍
(1)python模块,是一个python文件,以一个.py文件,包含了python对象定义和pyhton语句
(2)python对象定义和python语句
(3)模块让你能够有逻辑地组织你的python代码段。
(4)把相关的代码分配到一个模块里能让你的代码更好用,更易懂
(5)模块能定义函数,类和变量,模块里也能包含可执行的代码

二、模块的导入
注意点:
(1)一个模块只要导入一次,不管你执行多少次import,一次就可以
(2)模块不调用时是置灰状态

1、
格式:import 模块名
使用:模块名.函数名
案例:
import time
print(1)
time.sleep(5) #休眠
print(2)
在这里插入图片描述

2、from 包名.模块名 import * (*表示所有的函数)
from bao.aa import *
案例:
aa模块
def gs():
print(1)
def gs1():
print(2)
def gs2():
print(3)

bb模块:
from bao.aa import *
gs()
gs1()
gs2()
在这里插入图片描述
3、from 包名.模块名 import 函数名 (*表示所有的函数)
案例:
aa文件:
def gs():
print(1)
def gs1():
print(2)
def gs2():
print(3)

bb文件:
from bao.aa import gs
gs()

在这里插入图片描述

4、
通过取别名来调用函数
格式:from 模块名 import 函数名 as 别名

案例:
aa模板
def gs():
print(1)
def gs1():
print(2)
def gs2():
print(3)bb模块:

from bao.aa import gs as b
b()
在这里插入图片描述

=============================================
模块讲解:

一、time模块
import time
#1970年到现在经过的秒数
print(time.time()) #1651200498.799537
print(time.ctime()) #固定格式的当前时间
print(time.sleep(3)) # 休眠,也是强制等待
print(time.asctime()) #转化为asc码显示当前时间
print(time.strftime(“%H-%M-%S %y-%m-%d”))

==============================================
二、random模块
生成随机浮点数,帧数,字符串,甚至帮助你随机选择列表中的一个元素,打乱一组数据等;
from random import *
print(random()) #生成0-1之间的浮点数,但是能取到0,不能取到1
print(randint(1,100)) #生成指定范围内整数,包括开始值和结束值
print(randrange(1,100,2)) # 生成指定范围内的奇数
print(randrange(0,100,2)) #生成指定范围内的偶数
f=[1,2,3,6,7,2]
print(sample(f,3)) #生成从一个固定集合中选n个数随机
print(choice(f)) #随机生成一个字符
shuffle(f)
print(list(f))

==============================================
string 模块
print(string.digits) #0123456789 所有的数据
print(string.hexdigits) #0123456789abcdefABCDEF
print(string.ascii_uppercase) #ABCDEFGHIJKLMNOPQRSTUVWXYZ #所有的小写
print(string.ascii_lowercase) #abcdefghijklmnopqrstuvwxyz #所有小写

==============================================
作业:
案例1:使用random模块随机生成手机号码、自己定义手机号码开头的前三位
方法1:
sz=string.digits
sj=[‘159’]
for i in range(8):
s=choice(sz)
sj.append(s)
print(‘’.join(sj))

方法2:
from random import *
import string
sz=string.digits
a=sample(sz,8)
b=(‘’.join(a))
sj=input(‘前三位:’)
print(sj+b)

方法3:
from random import *
import string
sz=string.digits
a=sample(sz,8)
b=(‘’.join(a))
sz=‘159’
print(sz+b)

方法4:
from random import *
import string
sz=string.digits
a=sample(sz,8)
sz=[1,5,9]
sz.extend(a)
for i in sz:
print(i,end=‘’)

==============================================

2、用random模块随机生成6位数验证码

方法1:
from random import *
a=[]
for i in range(6):
b=str(randint(0,9))
a.append(b)
print(‘’.join(a))

方法2:
from random import *
import string
d=string.digits+string.ascii_uppercase+string.ascii_lowercase
print(d)
for i in range(6) :
s=choice(d)
print(s, end=‘’)
方法3:
import random
import string
yzm=string.digits+string.ascii_uppercase+string.ascii_lowercase

print(yzm)

a=random.sample(yzm,6)
print(‘’.join(a))

方法4:
a=[]
for i in range(6):
rand_num=random.randint(0,9)
a.append(str(rand_num))
print(‘’.join(a))
方法5:
import random
import string
print(‘’.join(random.sample(string.digits+string.ascii_lowercase,6)))

方法6:
from random import *
import string
def kk():
a=string.digits+string.ascii_uppercase+string.ascii_lowercase
k=[]
for i in range(6):
k.append(choice(a))
s=‘’.join(k)
return s
code=kk()
print(code)
def hh():
login=input(str(‘请输入上方验证码登录:’))
if login==code:
print(‘登录成功’)
else:
print(‘登录失败’)
hh()

===========================================
加密模块:
import hashlib

base64
MD5

一、加密算法
md5、rsa、AES ,DES.BASE
DES 以64位为分组队数据加密,加密和解密是同一算法‘;
rsa加密 算法:是一种非对称加密算法(在公开秘钥加密和电子商业中rsa被广泛使用)
AES rijndael 加密法对称加密中最流行的算法之一(AES为分组密码)

===================================

案例:

#base64加密
import base64
a=base64.b64encode(b"123456")
print(a) #b’MTIzNDU2’
#base64解密
b=base64.b64decode(b"MTIzNDU2")
print(b) #b’123456’
备注:base64 编码包含ascll是包含字符,二是二进制数据

===================================
MD5加密

(1)md5 是一种算法,可以将一个字符串或文件,md5后,就可以生成一个固定为128bit的串,这个串,基本上唯一;
(2)python2中有md5
(3)python将MD5 归纳到hash 模块,译作:‘散列’,直译为‘哈希’。
(4)md5 可以把任意长度的输入,通过种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值,,改算法就是哈希函数,也称摘要函数。(5)md5 是最常见的摘要算法,速度快,生成结果是固定16字节,通常用32位的16进制字符串表示。
(5)hash模块中包含MD5、sha1 ,sha256 ,sha512,等
(6)摘要;hash.digest() 返回摘要,作为二进制数据字符串值;
hash.hexdigeest 返回摘要,作为16进制数据字符串值
(7)案例1:
import hashlib
m=hashlib.md5() # 创建MD5对象
m.update(b"123456")
print(m.hexdigest()) #e10adc3949ba59abbe56e057f20f883e

十六直径转换输出

备注:
1、python中md5要加上b,python2不需要
2、md5 不能范姐,但是加密是固定,关系是一一对应,可以被对撞。

案例1
import hashlib
m=hashlib.sha384()
m.update(b’123456’)
print(m.hexdigest())

案例2
import hashlib
m=hashlib.sha256()
m.update(b’123456’)
print(m.hexdigest())
案例:
import hashlib
m=hashlib.sha512()
m.update(b’123456’)
print(m.hexdigest())

-==================================
面试题:
(1)如果在工作中有很多数据,如果数据被改动,或传递别修改,看不出?
a、通过加密检查数据
通过加密对数据进行加密处理,生成加密字符,如果有改动,字符就不相同
b、比对数据不一样,如果加密的字符不相同,说明两个数据不一致

=================================
作业:
通过md5加密算法把随机生成的6位数验证码进行加密返回16进制的字符串

===================================
os模块:

os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适 应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编 程时,经常和文件、目录打交道,所以离不了os模块。
os模块中常见的方法:
os.getcwd()获取当前执行命令所在目录
os.path.isfile()判断是否文件
os.path.isdir() #判断是否是目录
os.path.exists() #判断文件或目录是否存在
os.listdir(dirname) #列出指定目录下的目录或文件
os.path.split(name) #分割文件名与目录
os.path.join(path,name) #连接目录与文件名或目录
os.mkdir(dir) #创建一个目录
os.rename(old,new) #更改目录名称
os.remove() 删除文件

===========================
固定格式:xu
场景一:获取当前操作对象中的的的一个项目的绝对路径固定语法
import os
#获取项目路径
p=os.path.abspath(os.path.dirname(os.getcwd()))
print§

#获取当前文件的绝对路径,直接通过spliit对目录和文件进行分割
file_path=os.path.split(os.path.realpath(file))
print(file_path)
#(‘C:\Users\Administrator\PycharmProjects\gs1\bao’, ‘python006.py’)
#获取当前文件的绝对路径,直接通过spliit对目录
file_path=os.path.split(os.path.realpath(file))[0]
print(file_path)
#获取当前文件的绝对路径,直接通过spliit对目录
file_path1=os.path.split(os.path.realpath(file))[1]
print(file_path1)

#获取项目的绝对路径
v=os.path.dirname(os.path.dirname(file))
print(v)

#项目路径和包进行拼接
hz_path=os.path.join(v,‘ss.txt’)
print(hz_path) #C:/Users/Administrator/PycharmProjects/gs1\ss.txt

===========================
python中re模块

一、re正则匹配基本介绍
正则匹配:使用re模块实现

1、什么是正则表达式?
正则表达式是一种对字符和特殊字符操作的一种逻辑公式,从特点的字符中,用正则表达字符来过滤的逻辑。
2、正则表达式是一种文本模式;
3、正则表达式可以帮助我们检查字符是否与某种模式匹配
4、re模块使pyhton语言用有全部的表达式功能
5、re表达式作用?
(1)快速高效查找和分析字符比对自读,也叫模式匹配,比如:查找,比对,匹配,替换,插入,添加,删除等能力。
(2)实现一个编译查看,一般在入职处理文件时用的多

二、认识正则表达式中的特殊元素?
\d:数字0-9
\D:非数字
\s:空白字符
\n:换行符
\w 匹配字母数字
\W 匹配非字母数字
^:表示的匹配字符以什么开头
$:表示的匹配字符以什么结尾
:匹配前面的字符0次或n次 eg:ab (* 能匹配a 匹配ab 匹配abb )
+:匹配+前面的字符1次或n次
?:匹配?前面的字符0次或1次
{m}:匹配前一个字符m次
{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是
1、findall
从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个空列表[]

2、match
从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败得到一个none值
注意:如果规则带了’+’,则匹配1次或者多次,无’+'只匹配一次
3、compile(不考虑)
编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]
4、search
从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错

============================
group 以str 形式返回对象中match元素
span 以tuple形式返回范围

====================================

实战案例:
场景一、findall
从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个空列表[]
(1)第一种情况查找字符汇总存在的字符
import re # 导入re模块
s=‘anbdckk12356afjmba’
c=re.findall(‘a’,s)
print© #[‘a’, ‘a’, ‘a’] 显示查找的字符
(2)第二种情况查找不存在的字符
import re # 导入re模块
s=‘anbdckk12356afjmba’
c=re.findall(‘z’,s)
print© #[] 显示的是一个空了列表

在这里插入图片描述场景二、match 匹配开头
从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败得到一个none值
第一种情况:开头是匹配的是存在的字符
import re # 导入re模块
s=‘anbdckk12356afjmba’
c=re.match(‘a’,s)
print(c.span()) #显示结果是索引位:(0, 1)

第二种情况:开头匹配的是不存在字符
import re # 导入re模块
s=‘anbdckk12356afjmba’
c=re.match(‘z’,s)
print© #None

场景三、search
从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错
第一种情况:查看的字符存在,返回字符的索引位
import re # 导入re模块
s=‘anbdckk12356afjmba’
c=re.search(‘1’,s)
print(c.span()) #(7, 8)

第一种情况:查看的字符不存在,返回字符的是none
import re # 导入re模块
s=‘anb1dckk12356afjmba’
c=re.search(‘9’,s)
print© # None

=============================================

(1)\d:数字0-9 ,返回的结果是列表的格式
案例:
import re # 导入re模块
s=‘anb1dckk12356afjmba’
c=re.findall(‘\d’,s)
print© #[‘1’, ‘1’, ‘2’, ‘3’, ‘5’, ‘6’]

(2)\D:非数字
案例:
import re # 导入re模块
s=‘anb1dckk12356afjmba’
c=re.findall(‘\D’,s)
print©

(3)\s:空白字符
import re # 导入re模块
s=‘a nb1dck k12356a fjmba’
c=re.findall(‘\s’,s)
print© #[’ ', ’ ', ’ ', ’ ', ’ ']

(4)\n:换行符
案例:
import re # 导入re模块
s=‘a nb1\ndck k123 \n 56a fjmba’
c=re.findall(‘\n’,s)
print© #[‘\n’, ‘\n’]

(5)\w 匹配字母数字
案例:
import re # 导入re模块
s=‘a nb1*k123jmba’
c=re.findall(‘\w’,s)
print© #[‘a’, ‘n’, ‘b’, ‘1’, ‘k’, ‘1’, ‘2’, ‘3’, ‘j’, ‘m’, ‘b’, ‘a’]

(6)\W 匹配非字母数字
案例:
import re # 导入re模块
s=‘a nb1k123jmba’
c=re.findall(‘\W’,s)
print© #[’ ', '
’, ‘', '’, ‘', '’]

(7)^:表示的匹配字符以什么开头

案例:
import re # 导入re模块
s=‘anb1*k123jmba’
c=re.findall(‘^a’,s)
print© #[‘a’]
KaTeX parse error: Expected 'EOF', got '#' at position 30: …案例: import re #̲ 导入re模块 s='anb1…’,s)
print© #[‘b’]

  • 匹配前面的字符0次或n次 eg:ab (* 能匹配a 匹配ab 匹配abb )
    案例:
    import re # 导入re模块
    s=‘anb1aa**k123aaaajmb’
    c=re.findall('a
    ’,s)
    print©
    #[‘a’, ‘’, ‘’, ‘’, ‘’, ‘aa’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘aaaa’, ‘’, ‘’, ‘’, ‘’, ‘’]

+:匹配+前面的字符1次或n次
案例:
import re # 导入re模块
s=‘anb1aa**k123aaaa*jmaaaaaab’
c=re.findall(‘a+’,s)
print© #[‘a’, ‘aa’, ‘aaaa’, ‘aaaaaa’]

?:匹配?前面的字符0次或1次
案例:
import re # 导入re模块
s=‘anb1aa**k123aaaa*jmaaaaaab’
c=re.findall(‘a?’,s)
print©
#[‘a’, ‘’, ‘’, ‘’, ‘’, ‘a’, ‘a’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘a’, ‘a’, ‘a’, ‘a’, ‘’, ‘’, ‘’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘’, ‘’]

{m}:匹配前一个字符m次
案例:
import re # 导入re模块
s=‘abnb1abca**k123aaaa*jmaasaasaab’
c=re.findall(‘a{3}’,s)
print©#[‘aaa’]

{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是

案例:
s=‘abnb1abca**k123aaaa*jmaaasasaab’
c=re.findall(‘a{2,3}’,s)
print© #[‘aaa’, ‘aa’, ‘aa’, ‘aa’]

==========================================
re 标识符:
flags=标识符

(1)re.I(大写的i) 不区分大小写
import re # 导入re模块
s=‘abnb1AabcaAk123jmaaasasaab’
c=re.findall(‘a’,s,flags=re.I)
print© #[‘a’, ‘A’, ‘a’, ‘a’, ‘A’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’]

==========================================
sub 替换

import re # 导入re模块
s=‘abnb1AabcaAk123jmaaasasaab’
c=re.sub(‘\d’,‘拱墅’,s)
print©
#abnb拱墅AabcaAk拱墅拱墅拱墅jmaaasasaab

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

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

相关文章

使用信号量解决并发问题

使用信号量解决并发问题 本文主要讨论的是java的信号量在并发过程中的应用。信号量Semaphore的具体实现如下: package java.util.concurrent; import java.util.Collection; import java.util.concurrent.locks.AbstractQueuedSynchronizer;public class Semaphore …

【Tomcat】Apache发布两个新版本Tomcat修复多个Bug

Apache 官网发布了两个最新的 Tomcat 版本包,分别是:8.5.94、9.0.81 这两个最新版本修复了多个漏洞,统计信息如下表所示。有关漏洞的详细信息,请查阅官方相关文档(见:参考)。 严重等级漏洞说明…

【java学习】数组中涉及的常见算法-含冒泡排序(11)

文章目录 1. 最大值、最小值、总和、平均数2. 数组的复制、反转3. 数组元素的排序3.1. 排序方式3.1.1. 冒泡排序 1. 最大值、最小值、总和、平均数 代码如下: public class Test1 {public static void main (String[] args) {int[] arr new int[] {4,2,7,1,3,5};/…

Element-Form表单单独取消某一项的校验

业务场景: **活动区域下拉框的值,选择为区域二时,显示活动形式(必填项)。 活动区域下拉框的值,选择为区域一时,活动形式则隐藏,因为活动形式为必填项,点保存是走ruleForm…

卷积神经网络CNN基础知识

目录 1 前言2 卷积神经网络CNN2.1 LeNet-5相关介绍2.2 CNN基本结构2.2.1 卷积层2.2.2 池化层(下采样层)2.2.3 全连接层2.2.3.1激励层(非线性激活)2.2.3.2 线性层2.2.3.3 Dropout层2.2.3.4 总结 2.3 图像的上采样和下采样2.3.1 上采…

WPF学习

1、 <ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries> 这段XAML代码涉及到WPF中的资源字典&#xff08;Resource Dictionary&#xff09;&#xff0c;用于引入外部样式或资源以在您的WPF应用程序中重用。让我逐句解释&#xff…

联盟链学习笔记-网络的创建

联盟链学习笔记 初始网络 下图是初始网络网络N的参考图 排序服务 在定义 网络 N 的时候&#xff0c;第一件事情就是定义一个 排序服务O4。O4 最初被配置并且由组织 R4 的一个管理员来启动&#xff0c;并且由 R4 管理。配置 NC4 包含了描述网络管理能力初始集合的规则。最初…

基于vue的移动端如何监听系统返回

一、问题场景 移动端项目基于vue框架搭建的微服务子应用&#xff0c;每个小功能都是独立存在&#xff1b;当我们退出某个功能页面&#xff0c;返回主页时使用的是手机系统自带的返回功能&#xff1b;未使用程序界面左上角返回按钮&#xff0c;这时候返回逻辑中的清除缓存操作没…

微软开源 windows-drivers-rs,用 Rust 开发 Windows 驱动程序

导读Microsoft Azure 首席技术官兼著名 Windows 软件开发人员 Mark Russinovich 在社交平台上宣布&#xff0c;启动了一个名为 windows-drivers-rs 的新开源项目。 该项目可帮助开发人员使用 Rust 开发 Windows 驱动程序&#xff0c;旨在支持 WDM (Windows Driver Model) 和 W…

【C语言】程序环境和预处理

程序环境&#xff1a; 1、C语言的任何一种实现&#xff0c;存在两个不同的环境&#xff1b; 2、翻译环境&#xff1a;将源代码转换成可执行的二进制指令&#xff08;机器指令&#xff09;&#xff1b;.c文件&#xff08;源文件——文本信息的代码&#xff09;->&#xff0…

微服务12-分布式服务理论基础+Seata的认识

文章目录 分布式服务理论基础前言微服务和分布式的区别CAP定理BASE理论 Seata流程&#xff1a;seata部署微服务集成seata 分布式服务理论基础 前言 单体架构&#xff1a; 1.项目过于臃肿&#xff0c;所有服务在一起&#xff0c;一个业务挂了&#xff0c;整个项目就不能用了&…

腾讯云我的世界mc服务器多少钱一年?

腾讯云我的世界mc服务器多少钱&#xff1f;95元一年2核2G3M轻量应用服务器、2核4G5M带宽优惠价218元一年、4核8G12M带宽轻量服务器446元一年&#xff0c;云服务器CVM标准型S5实例2核2G优惠价280元一年、2核4G配置服务器748元一年&#xff0c;腾讯云百科txybk.com分享腾讯云我的…

人事管理系统springboot42

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

Vue15 计算属性VS监视属性(侦听属性)

计算属性VS监视属性&#xff08;侦听属性&#xff09; computed和watch之间的区别&#xff1a; 1.computed能完成的功能&#xff0c;watch都可以完成。 2.watch能完成的功能&#xff0c;computed不一定能完成&#xff0c;例如&#xff1a;watch可以进行异步操作。 两个重要的小…

webpack性能优化之打包优化

1、禁止生成 sourceMap 文件 Vue打包时会生成map文件&#xff0c;map文件的作用在于&#xff1a;项目打包后&#xff0c;代码都是经过压缩加密的&#xff0c;如果运行时报错&#xff0c;输出的错误信息无法准确得知是哪里的代码报错。有了map就可以像未加密的代码一样&#xf…

HNU-计算机网络-讨论课1

题目&#xff1a; 有关网络系统结构的讨论 一、必选问题&#xff08;每组平均每人1个&#xff09; 1、分层结构其实是世界演进形成的普遍系统结构&#xff0c;不管是自然领域还是社会领域&#xff0c;请举例说说你的理解。 2、有人说通信网络的核心技术在物理层&#xff0c…

jvm打破砂锅问到底- 为什么要标记或记录跨代引用

为什么要标记或记录跨代引用. ygc时, 直接把老年代引用的新生代对象(可能是对象区域)记录下来当做根, 这其实就是依据第二假说和第三假说, 强者恒强, 跨代引用少(存在互相引用关系的两个对象&#xff0c;是应该倾 向于同时生存或者同时消亡的). 拿ygc老年代跨代引用对象当做根…

Spring Boot 中的 TransactionTemplate 是什么,如何使用

Spring Boot中的TransactionTemplate&#xff1a;简化事务管理 事务管理是任何应用程序中至关重要的部分&#xff0c;特别是在处理数据库操作时。Spring Boot提供了多种方式来管理事务&#xff0c;其中之一是使用TransactionTemplate。本文将深入探讨TransactionTemplate是什么…

设计师都应该知道的事:极简主义家具该怎么去用

这座房子有黑暗而沉重的特征&#xff0c;包括棕色和白色的马赛克浴室瓷砖&#xff0c;弯曲的锻铁壁灯和土黄色的威尼斯石膏墙。但由于房屋与他们的风格相去甚远&#xff0c;白色&#xff0c;干净和简约&#xff0c;接下来我们就着这个方向去帮助房主进行改造。 她解释说&#x…

小谈设计模式(24)—命令模式

小谈设计模式&#xff08;24&#xff09;—命令模式 专栏介绍专栏地址专栏介绍 命令模式角色分析命令&#xff08;Command&#xff09;具体命令&#xff08;ConcreteCommand&#xff09;接收者&#xff08;Receiver&#xff09;调用者&#xff08;Invoker&#xff09;客户端&am…