Python本人自学笔记(14)模块及常用的第三方模块

掌握自定义模块的创建

掌握模块的导入

了解Python中包的定义

掌握Python中常用的内置模块

了解Python中常用的第三方模块

模块的简介

  • 在Python中一个后缀为 .py 的 Python 文件就是一个模块
  • 模块中可以定义函数、类等
  • 模块也可以比年函数、类、变量等名称相冲突的问题
  • 模块不仅提高了代码的可维护性,同时还提高了代码的可重用性
  • 在给模块命名的时候要求全部用小写字母,多个单词之间使用下划线 ’_‘ 进行分隔
  • 如果自定义模块名称与系统内置模块名称相同,那么在导入时会优先导入自定义的模块

 自定义模块

 模块分为

  • 系统内置模块:由开发人员编写好的模块,在安装Python解释器时一同安装成计算机
  • 自定义模块:一个以 .py 结尾的文件就是一个模块,新建Python文件,实际上就是新建模块

自定义模块的作用:

  • 规范代码,将功能相同的函数、类等封装到一个模块中,让代码更易于阅读
  • 另一个目的与系统内置模块相同,即可以被其他模块调用,提高开发效率

模块的导入

import 导入方式的语法结构:

        import 模块名称 [ as 别名 ]

        如果所导入的模块名字长,就可以在后面用 as 起一个别名,使用时就用别名

from...import 导入方式的语法结构:(导入模块的某个 变量 / 函数 / 类
        from 模块名称 import 变量 / 函数 / 类 / *(表示导入模块中所有)

#使用 import 模块名称 [as别名]
import my_info
print(my_info.name)
my_info.info()
print('-'*50)
import my_info as info#使用别名
print(info.name)
info.info()
print('-'*50)

#使用 from 模块名称 import 变量/函数/类/*
from my_info import name#只导入变量name
print(name)
#info()未导入 info() 函数,报错
print('-'*50)
from my_info import info#导入 info() 函数
info()

同时导入多个模块

        可以用import [模块1],[模块2],[...],[模块n]

导入多个模块中具有同名的变量和函数,会使用后导入的模块

from my_info import *
from introduce import *
#导入模块中具有同名的变量和函数,会使用后导入的模块
info()

如果不想覆盖可以使用 import,然后打点调用(模块名.函数/类)

import my_info
import introduce
my_info.info()
introduce.info()

Python中的包

  • 含有__init__.py 文件的文件夹(目录)
  • 可以避免模块名称相冲突的问题

创建包,Python Package(Python 软件包)

包中自生成一个__init__.py

导入包,调用包中的函数时会先运行一次__init__.py模块的内容

import admin.my_admin as a#用包名.模块名导入
a.info()#会先运行__init__.py
print('-'*50)
from admin import my_admin as b
b.info()
print('-'*50)
from admin.my_admin import info
info()

 Python中常用的内置模块

在安装Python解释器时与解释器一起安装进来的模块被称为系统内置模块,也被称为标准模块或标准库

标准库名称功能描述
os模块与操作系统和文件相关操作有关的模块
re模块用于在Python的字符串中执行正则表达式的模块
random模块用于产生随机数的模块
json模块用于对高维数据进行编码和解码的模块
time模块与时间相关的模块
datetime模块与日期时间相关的模块,可以方便的显示日期并对日期进行运算的模块

 random模块

 random模块是Python中用于产生随机数的标准库

函数名称功能描述
seed(x)初始化给定的随机数种子,默认为当前系统时间
random()产生一个 [ 0.0,1.0)之间的随机小数
randint(a,b)生成一个 [ a , b ] 之间的整数 
randrange(m,n,k)生成一个 [ m , n )之间步长为 k 的随机整数
unifrom(a,b)生成一个 [ a , b ]之间的随机小数
choice(seq)从序列中随机选择一个元素
shuffle(seq)将序列seq中元素随机排列,返回打乱后的序列

 示例:

import random#导入random模块
random.seed(10)#设种子
print(random.random())#产生[0.0,1.0)之间的随机小数
print(random.randint(0,100))#随机10以内的整数
lst=[i for i in range(10)]
print(random.choice(lst))
random.shuffle(lst)
print(lst)

time模块

time模块是Python中提供的用于处理时间的标准库,可以用来进行时间处理、时间格式化和计时等

函数名称

功能描述

time()获取当前时间戳
localtime(sec)获取指定时间戳对应的本地时间的struct_time对象
ctime()获取当前时间戳对应的易读字符串
strftime()格式化时间,结果为字符串
strptime()提取字符串的时间,结果为steuct_对象
sleep(sec)休眠sec秒
格式化字符日期 / 时间取值范围
%Y年份0001~9999
%m月份01~12
%B月名January~December
%d日期01~31
%A星期Monday~Sunday
%H小时(24h)00~23
%I小时(12h)01~12
%M分钟00~59
%S00~59

datetime模块

可以更方便的显示日期并对日期进行运算

类名功能描述
datetime.datetime表示日期时间的类
datetime.timedelta表示时间间隔的类
datetime.date表示日期的类
datetime.time表示时间的类
datetime.tzinfo时区相关的类

re模块 正则表达式

元字符

具有特殊意义的专用字符,例如 "^" 和 "$" 分别表示匹配的开始和结束

元字符描述说明举例结果
.匹配任意字符(除 \ n)' p\nytho\tn

p、y、t、h、o、\t、n

\w匹配字母、数字、下划线'python\n123'p、y、t、h、o、n、1、2、3
\W匹配非字母、数字、下划线'python\n123'\n
\s匹配任意空白字符'python\t123'\t
\S匹配任意非空白字符'python\t123'p、y、t、h、o、n、1、2、3
\d匹配任意十进制数’python\t123'1、2、3

限定符

用于限定匹配的次数

限定符描述说明举例结果
匹配前面的字符0次或1次colou?r可以匹配color或colour
+匹配前面的字符1次或多次colou+r可以匹配colour或colouu...r
*匹配前面的字符0次或多次colou*r可以匹配color或colouu...r
{n}匹配前面的字符n次colou{2}r可以匹配colouur
{n,2}匹配前面的字符至少n次colou{2,}r可以匹配colouur或colouuu...r
{n,m}匹配前面的字符至少n次,最多m次colou{2,4}r可以匹配colouur或colouuuur

其他字符

其他字符描述说明举例结果
区间字符[ ]匹配 [ ] 中指定的的字符

[ . ? ! ]

[ 0-9 ]

匹配标点符号 . ? !

匹配 0 到 9 数字

排除字符 ^ 匹配不在 [ ] 中的指定字符[^0-9]

匹配除 0 到 9

选择字符 | 用于匹配 | 左右的任意字符\d{18}|\d{15}匹配15位身份证或18位身份证
转义字符同Python中的转义字符\.将 . 作为普通字符使用
[\u4e00-\u9fa5]匹配 任意一个汉字
分组()改变限定符作用

six|fourth

(six|four)th

匹配six或fourth

匹配sixth或fourth

re模块函数

函数功能描述
re.match(pattern,string,flags=0)用于从字符串开始位置进行匹配,如果起始位置匹配成功,结果为Match对象,否则为None
re.search(pattern,string,flags=0)用于在整个字符串中搜索第一个匹配的值,如果匹配成功,结果为Match对象,否则为None
re.findall(pattern,string,flags=0)用于在整个字符串搜索所有符合正则表达式的值,结果为列表
re.sub(pattern,repl,string.count,flags=0)用于实现对字符串中指定字串的替换
re.split(pattern,string,maxsplit,flags=0)字符串中的split()方法功能相同,都是分隔字符串

简单举例

match函数的使用

import re
pattern='\d\.\d+'#模式字符串
s='I study Python 3.11 every day'#待匹配字符串
match=re.match(pattern,s,re.I)#(模式字符串,待匹配字符串,忽略大小写)
print(match)#None
s2='3.11 Python I study every day'
match2=re.match(pattern,s2,re.I)#(模式字符串,待匹配字符串,忽略大小写)
print(match2)#<re.Match object; span=(0, 4), match='3.11'>

print('开始位置:',match2.start())#开始位置
print('结束位置:',match2.end())#结束位置
print('区间位置元素:',match2.span())
print('待匹配字符串:',match2.string)
print('匹配的数据:',match2.group())#输出匹配的数据

search函数使用

import re#导入re模块
pattern='\d\.\d+'#模式字符串
s='I study Python3.11 every day Python2.7 I love you'#待匹配字符串
match=re.search(pattern,s,re.I)#找到第一个符合规则的
print(match)
print('匹配的数据:',match.group())#3.11

findall函数使用

import re#导入re模块
pattern='\d\.\d+'#模式字符串
s1='I study Python3.11 every day Python2.7 I love you'#待匹配字符串
s2='4.10 Python I study every day'
s3='I study Python every day'

lst1=re.findall(pattern,s1)
lst2=re.findall(pattern,s2)
lst3=re.findall(pattern,s3)
print(lst1)#返回列表类型不需要.group()
print(lst2)#返回列表类型不需要.group()
print(lst3)#返回列表类型不需要.group()

sub函数使用

import re
pattern='黑客|破解|反爬'#模式字符串
s='我想学习Python,想破解一些VIp视频,Python可以实现无底线反爬吗'#待匹配字符串
new_S=re.sub(pattern,'XXX',s)#(模式字符串(不允许出现的字符),替换成'XXX',待匹配字符串)
print(new_S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值