编程思想和包的使用
编程思想和包的使用
-
包的具体使用
-
编程思想转变
-
目录开发规范
-
常用内置模块
- collections
- 时间模块
- 随机数模块
-
包的具体使用
虽然python3中不强制要求包里必须要有__init__.py这个文件,但是在写代码时最好将这个文件创建出来,放在代码兼容问题的出现
- 程序员写包时 ,一般会写很多模块文件,然后将模块在__init__.py文件中引用,这样我们在使用的时候就可以通过导入这个包然后调用包里的模块文件
- 编程思想
编程思想就是指我们在运到一个编程问题时的想法和思路,比如如果规划程序的架构方便后期更改,如何做到高聚合低耦合的代码架构,不具备编程思想的人只能写一些简单逻辑的代码,当这个程序员具备了编程思想后,很多问题都会迎刃而解
如何学习编程思想,就是多写多练,参考优秀代码,思想碰撞,参考其他人看待问题的逻辑,完善自身
- 软件开发目录
在我们开始实现一个复杂性系统时,首先考虑的并不是使用什么技术去实现,而是分析需求,分类需求并设计合理的项目目录结构
# 通用性软件开发目录
wesley@------*****------ ⮀ ~/Desktop ⮀ tree myproject
myproject # 项目目录
├── README # 项目说明文件
├── bin # 执行文价夹
│ └── start.py
├── conf # 配置文件
│ └── settings.py
├── core # 源码,主要的功能代码
│ └── src.py
├── db # 数据库相关操作代码
│ ├── db_handler.py
│ └── userinfo.txt
├── interface # api文件夹
│ ├── accpunt.py
│ ├── goods.py
│ └── user.py
├── lib # 公共功能
├── log # 日志存放文件夹
│ └── log.log
└── requirements.txt # 项目运行环境,项目需要安装的py包
- 常用内置模块
- 时间模块 time()
时间的三种表现形式
- 时间戳
时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数,也被称为 Unix 时间戳(Unix Timestamp)。Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数 - 结构化时间
结构化时间主要是让计算机更容易识别,对人来说不友好 - 格式化时间
格式化时间就是日常生活中使用的时间格式,对人比较友好
import time
# 使用time操作时间,需要先了解一下时间的表示字符
1. %Y年 %m月 %d日 %H时 %M分 %S秒 (时分秒可以直接使用%X表示)
print(time.time()) # 获取时间戳
1666165015.075217
print(time.localtime()) # 获取结构化时间
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=15, tm_min=38, tm_sec=27, tm_wday=2, tm_yday=292, tm_isdst=0)
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 结构化时间
2022-10-19 15:47:19
time.sleep(10) # 让程序原地阻塞10s 不向下执行
- 时间模块 datatime()
from datetime import datetime, data
print(datetime.now()) # 获取当前时间
2022-10-19 15:54:32.369996
print(datetime.today()) # 获取当前时间
2022-10-19 15:54:32.370011
print(date.today()) # 获取当前时间
2022-10-19
print(datetime.utcnow()) # 获取UTC时间,如果使用需要+8时区
2022-10-19 07:58:53.576582
a = datetime(1989, 10, 9, 12, 20)
print('指定日期', a)
指定日期 1989-10-09 12:20: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)
print(ctime + time_del)
"""
1. 这里可以通过today获取当前时间,再使用timedelta(days=3)可以得当3天后的时间,可以使用在一些T+的程序上
"""
- 随机数模块 random
import random
print(random.random()) # 产生0-1之间的小数
0.07248586814334035
print(random.randint(1, 6)) # 产生1-6 之间的随机数
2
print(random.randrange(1, 100, 2)) # 随机产生一个整数
43
print(random.choice(['zhang', 'liu', 'wang', 'li']))
zhang # 随机抽取一个样本
print(random.choices(['zhang', 'li', 'wang', 'lan']))
['lan'] # 随机抽取一个样本,和choice的差别是保留了格式
print(random.sample(['jason', 'kevin', 'tony', 'oscar', 'jerry', 'tom'], 2))
['tom', 'jerry'] # 随机抽取2份样数据
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
random.shuffle(l1) # 随机打乱数据集
print(l1)
[6, 'K', 10, 8, 5, 2, 9, 'A', 'J', 4, 'Q', 3, 7]
'''产生图片验证码: 每一位都可以是大写字母 小写字母 数字 4位'''
def random_num(n):
code = ''
for i in range(n):
# 1.先产生随机的大写字母 小写字母 数字
random_upnum = chr(random.randint(65, 90))
random_lowum = chr(random.randint(97, 122))
random_int = str(random.randint(0, 9))
# 产生随机验证码
temp = random.choice([random_lowum, random_upnum, random_int])
code += temp
return code
res = random_num(9)
print(res)

浙公网安备 33010602011771号