首页 > 编程语言 >python进阶之路17 包的使用、collections、time、random模块

python进阶之路17 包的使用、collections、time、random模块

时间:2022-10-19 19:11:09浏览次数:44  
标签:py 进阶 17 random datetime time print import

image

大白话: 多个py文件的集合>>>:文件夹
专业:内部含有__init__.py文件的文件夹(python2 必须要求 python3无所谓)

包的具体使用

虽然python3对包的要求降低了 不需要__init__.py也可以识别 但是为了兼容性考虑最好还是加上__init__.py

1.如果只想用包中某几个模块 那么还是按照之前的导入方式即可
	from aaa import md1,md2
2.如果直接导入包名
	import aaa
    导入包名其实就是导包下面的__init__.py文件,该文件内有什么名字就可以通过包名点什么名字

编程思想的转变

1.面条版阶段
	所有的代码全部堆叠在一起
2.函数版阶段
	根据功能的不同封装不同的函数
3.模块版阶段
	根据功能的不同拆分成不同的py文件
"""
第一个阶段可以看成是直接将所有的数据放在C盘
	视频 音频 文本 图片
第二阶段可以看成是将C盘下的数据分类管理 视频文件夹
音频文件夹 文本文件夹 图片文件夹
第三阶段可以看成是将C盘下的数据根据功能的不同划分到更合适的位置
	系统的文件夹 C盘
	视频的文件夹 D盘
	图片的文件夹 E盘
ps:类似于开公司(小作坊 小公司 上市公司)
	为了资源的高效管理
"""

软件开发目录规范

1.文件及目录的名字可以变换 但是思想是不变的分类管理
2.目录规范主要规定开发程序的过程中针对不同的文件功能需要做不同的分类
myproject项目文件夹
1.bin文件夹         主要存放项目启动文件
	start.py     启动文件可以放在bin目录下也可以直接在项目根目录下 (名字尽量见名知意)
	
2.conf文件夹(config) 主要存放项目配置文件
	settings.py  里面存放项目的默认配置 一般都是全大写的变量名
	
3.core文件夹       主要存放项目核心文件
	src.py    里面存放项目核心功能
	
4.interface文件夹  主要存放接口文件
	goods.py   根据具体业务逻辑划分对应的文件
	user.py 
	account.py 
	
5.db文件夹        主要存放项目相关数据
	userinfo.txt
	db_handler.py   专门存放数据库操作相关的代码
	
6.log文件夹        主要存放项目日志文件
	log.log
7.lib文件夹     主要存放项目公共功能
	common.py
	
8.readme文件      主要存放项目相关说明

9.requirements.txt文件     主要存放项目所需模块及版本

常见的内置模块之collections模块

1.具名元组 namedtuple
from collections import namedtuple

# 表示二维坐标系
# point = namedtuple('点',['x','y'])
# 生成点信息
# p1 = point(1,2)
# print(p1)   # 点(x=1, y=2)
# print(p1.x)  # 1
# print(p1.y)   # 2

card = namedtuple('扑克牌',['num','color'])
c1 = card('A','黑♠')
c2 = card('A','红♥')
print(c1,c1.num,c1.color)
print(c2,c2.num,c2.color)
2.队列
	队列与堆栈
    队列:先进先出
    堆栈:先进后出
from collections import deque
# q = deque([1,2,3])
# print(q)   # deque([1, 2, 3])
# print(q.pop())   # 3
# print(q.popleft())   # 1
from multiprocessing import Queue
q = Queue(3)  # 队列只能放三个数
q.put(1)
q.put(2)
q.put(3)
q.put(4)    # 第四个会卡到
print(q.get())   # 往外取数据
print(q.get())
print(q.get())

# from collections import OrderedDict    # 有序字典
# od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
# od['d'] = 4
# od['e'] = 5
# od['f'] = 6
# for i in od:
#     print(i)


# l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# # 统计 {'k1'[小于60], 'k2':[大于60]}
# 1.先定义字典数据
# num_dict = {'k1': [], 'k2': []}
# 2.for循环列表数据
# for i in l1:
#     if i > 60:
#         num_dict.get('k2').append(i)
#     else:
#         num_dict.get('k1').append(i)
# print(num_dict)

# res = 'asdasdasafddghffdhjgfjkhgkghkg'
# # 统计出现的次数
# from collections import Counter
# ret = Counter(res)
# print(ret)   # Counter({'d': 5, 'g': 5, 'a': 4, 'f': 4, 'h': 4, 's': 3, 'k': 3, 'j': 2})

常见的内置模块之时间模块

import time
"""
三种时间表现形式
    1.时间戳
        秒数
    2.结构化时间
        主要是给计算机看的 人看不适应
    3.格式化时间
        主要是给人看的
"""
# print(time.time())   # 1666166420.169025
print(time.localtime())   # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=5, tm_sec=46, tm_wday=2, tm_yday=292, tm_isdst=0)
# print(time.strftime('%Y-%m-%d'))  #  2022-10-19
# print(time.strftime('%Y-%m-%d  %H:%M:%S'))  #  2022-10-19  16:02:38
# print(time.strftime('%Y-%m-%d  %X'))  #  2022-10-19  16:02:58
time.sleep(10)  #  让程序原地阻塞指定的秒数

# import datetime
#
# print(datetime.datetime.now())  # 2022-10-19 16:11:17.476214
# print(datetime.datetime.today())  # 2022-10-19 16:11:17.476214
# print(datetime.date.today())  # 2022-10-19
'''
datrime  年月日  时分秒
date 年月日
time  时分秒(后续会有此规律)
'''

# from datetime import date, datetime
#
# print(datetime.today())
# print(date.today())
# print(datetime.utcnow())   # 格林威治时间


# import datetime
# c = datetime.datetime(2006,3,19,12,12)
# print('指定日期:',c)   # 指定日期: 2006-03-19 12:12:00
# from datetime import datetime
# d = datetime.strptime('2004/9/30','%Y/%m/%d')
# print(d)  # 2004-09-30 00:00:00
# e = datetime.strptime('2017年9月30日星期六','%Y年%m月%d日星期六')
# print(e)   # 2017-09-30 00:00:00   如果日期对不上则报错 比如写这一天是周五就会报错
# f = datetime.strptime('2017年9月30日星期六8时42分24秒','%Y年%m月%d日星期六%H时%M分%S秒')
# print(f)      # 2017-09-30 08:42:24

#  时间差值
import datetime
ctime = datetime.date.today()
print(ctime)
time_del = datetime.timedelta(days=3)   # 时间还可以按照 seconds  weeks hours minutes
print(ctime+time_del)

常见的内置模块之随机数模块

import random

# print(random.random())  # 随机产生0-1之间的小数
# print(random.randint(1,6))  # 随机产生1-6之间的整数
# print(random.randrange(1,100))  # 随机产生1-100之间的数
# print(random.randrange(1,100,2))  # 随机产生指定的整数
# print(random.choice(['一等奖','二等奖','三等奖','谢谢惠顾']))  # 随机抽取一个样本  数据值
# print(random.choices(['一等奖','二等奖','三等奖','谢谢惠顾'])) #  随机抽取一个样本  ['二等奖']
# print(random.sample(['jason','tony','jerry'],2))  # 随机抽样 抽指定样本数

# l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
# random.shuffle(l1)   # 随机打乱数据集
# print(l1)


'''产生随机图片验证码: 每一位都可以是大写字母 小写字母 数字 4位   随机'''
def get_code(n):
    code = ''
    for i in range(n):
        # 1.先产生随机的大小写字母  小写字母  数字
        random_upper = chr(random.randint(65,90))
        random_lower = chr(random.randint(97,122))
        random_num = str(random.randint(0,9))
        # 2.随机三选一
        temp = random.choice([random_num,random_upper,random_lower])
        code +=temp
    return code

ret = get_code(10)
print(ret)
ret = get_code(5)
print(ret) 

标签:py,进阶,17,random,datetime,time,print,import
From: https://www.cnblogs.com/xm15/p/16807405.html

相关文章