Python系统学习-08

本文介绍了 Python 中模块的概念及其分类,包括内置模块、扩展模块和自定义模块,并详细讲解了 collections、queue、time、random、os 和 re 等常用模块的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模块

1.1为什么要有模块

  • python其实有很多现成的方法,但是这些函数不能全都放在内存里
  • 为用户节省很多不必要的内存消耗
  • 用不到的功能就不用导入到内存里了

1.2模块是什么

  • 一块python代码
  • 一组python代码
  • 一组C语言的代码
  • 一堆写好的 现成可以用的 函数、类
  • 以功能来分类的

1.3模块有哪几类

  • 内置模块 —— 随着python解释器的安装直接可以使用的模块
  • 扩展模块 —— 需要你自己安装一下才能使用的模块 django itchat
  • 自定义模块 —— 用户根据自己的需求完成的一组功能
1.3.1内置模块
  • os 操作系统
  • sys模块
  • time&datetime&date模块

1.4collection模块

  • 使用模块必须先导入
  • 已知的所有模块名都不可以作为python文件名
  • 每一个模块都有一个大致的功能
  • collections给我们提供了一些额外的数据类型
  • str int list dict tuple set float 内置数据类型
  • 每一个类都是一个数据类型 自定义数据类型
  • collecctions模块是扩展我们数据类型的一个模块

例子:

import collections

Point = collections.namedtuple('point',['x','y'])
p = Point(1,2)

print(p)
print(p.x)
print(p.y)

1.5队列、栈

在存储数据的基础上 严格的维持了一个秩序,数据的进出顺序

  • queue #队列 先进来的先出去 —— 售票
  • 栈 #先进来的后出去 —— 计算机的计算、算法

例子:

import queue # 队列
q = queue.Queue()
l = list()
q.put(1)  # 放
q.put(2)  # 放
print(q.get()) # 1
print(q.get())  # 2

====================
import collections

dq = collections.deque()
dq.append(1)
dq.append(2)
print(dq)
print(dq.pop())
print(dq)
dq.appendleft(5)
print(dq.popleft())
print(dq)

1.6时间的几种表示格式

  • unix时间戳时间
  • 为什么要有时间戳时间 —— 计算机用的float
print(time.strftime('%Y'))  # year
print(time.strftime('%m'))  # month
print(time.strftime('%d'))  # day
print(time.strftime('%H'))  # hour
print(time.strftime('%M'))  # Minute
print(time.strftime('%S'))  # Second
print(time.strftime('%c'))  # year
print(time.strftime('%m/%d/%Y %H:%M'))  # year
  • 时间戳时间float —— 给机器看的
  • 结构化时间 —— 中间的过渡
  • 格式化 %s —— 给人看的
1.7转换关系
import time

timestamp = time.time()
print(timestamp)
ts2 = 3000000000
print(time.localtime())

struct_time = time.localtime(ts2)
print(time.strftime('%m/%d/%Y %H:%M',struct_time))

struct_time = time.strptime('2020','%Y')
print(time.mktime(struct_time))
print(time.strptime('2020','%Y'))

1.8random模块

print(chr(65))
print(chr(97))
0-9 数字
65-90 大写字母
97-122 小写字母

例子:随机生成4位长度数字

def random_code(num,alpha=True):
    import random
    code = ''
    for i in range(num):
        choice = str(random.randint(0,9))
        if alpha:
            alpha_lower = chr(random.randint(65,90))
            alpha_upper = chr(random.randint(97,122))
            choice = random.choice([choice,alpha_lower,alpha_upper])
        code += choice
    return code

print(random_code(4,False))

1.9os模块

import os
print(os.getcwd())
print(file)
os.chdir(os.path.dirname(file))
print(os.getcwd())

  • 所谓工作目录并不是当前文件所在的位置
  • 而是执行代码的时候我的目录

1.10re模块

  • 从一个巨大的字符串集合中,
  • 根据规则来找到你想要的内容
  • 或者判断某一段字符串是否是你规定的
  • 字符组中常用的范围
    数字 [0-9]
    字母 [A-Za-z]
    数字 [A-Za-z0-9]
  • [2-5]
    -在字符组中有特殊的意义
    如果你不希望它表示特殊意义,就用\进行转译
    这样这个特殊的意义就被取消,它只表示它自己本身的意义
import re
ret = re.findall('\d+(\.\d+)?', 'eva45.65+346[55] egon 35yuan15')
print(ret)
ret = re.findall('(\d)5', 'eva4565346[5555] egon 35yuan15')
print(ret)  # findall特性 匹配的时候按照规则匹配,显示只显示分组内的
ret = re.findall('\[(\d+)\]', 'eva4565346[555] egon 35yuan15')
print(ret)  # 在分组的开始加上?:表示取消分组优先
1.10.1规则

?做量词 表示0次或1次
?在量词后 表示惰性匹配
?:在分组开头 表示取消分组优先

ret = re.search('(\d)5', 'eva4565346 egon 35yuan15')
print(ret)
if ret:
    print(ret.group())
    print(ret.group(0))
    print(ret.group(1))
    print(ret.group(2))
在search中没有正则规则的分组优先显示功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值