Python学习路程——Day18
包的具体使用
'''
虽然在python3中对包的要求低了,不需要__init__.py文件也可以识别,但是为了兼容性考虑,我们最好还是要加上__init__.py
1、如果只想用包中的某几个模块,还可以按照之前的导入方式导入
2、直接导入包名
导入包名其实是导入了包下面的__init__.py文件,我们点的方式只能使用该文件内的名字,如果要使用其他模块,需要在__init__.py中导入相应的模块
'''
软件开发目录规范
'''
1、文件以及目录的名字是可以变换的,但是思想时不变的,分类管理
2、目录规范主要规定开发过程中针对不同的文件功能需要做不同的分类
目录规范格式:
MyProject项目文件夹
1、bin文件夹 主要存放项目启动文件
start.py (启动文件可以放在bin目录下,也可以直接在项目的根目录下)
2、conf文件夹 主要存放项目的配置文件
settings.py (里面存放新项目的默认配置,一般都是大写)
3、core文件夹 主要存放项目核心文件
src.py (里面存放项目核心功能)
4、interface文件夹 主要存放项目接口文件
goods.py、user.py、account.py (根据具体业务逻辑划分相应的文件)
5、db文件夹 主要存放项目相关数据
userinfo.txt
db_handler.py 存放数据库操作相关的代码
6、log文件夹 主要存放项目日志文件
7、lib文件夹 主要存放项目公共功能
8、readme文件 主要存放项目相关说明
9、requirements.txt文件 主要存放项目所需模板及版本
'''
常用内置模块
collections模块
1、具名元组:namedtuple
'''
具名元组:namedtuple
导入语法结构:
from collections import namedtuple
'''
from collections import namedtuple
card = namedtuple('扑克牌', ['number', 'type'])
user_one = card('Q', '黑桃')
user_two = card('K', '红心')
print(user_one, user_two)
print(user_one.number, user_two.number)
print(user_one.type, user_two.type)
2、队列和堆栈
'''
队列:先进先出
堆栈:先进后出
队列和堆栈都是只有一边只能进,一边只能出
'''
3、双端队列deque
from collections import deque
a = deque()
a.append(11)
a.append(22)
a.appendleft(999)
print(a) # deque([999, 11, 22])
4、有序字典OrderedDict
from collections import OrderedDict
dict_one = dict([('a',1),('b',2),('c',3)])
print(dict_one) # {'a': 1, 'b': 2, 'c': 3}
o_dict = OrderedDict([('a',1),('b',2),('c',3)])
print(o_dict) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
5、计数Counter
from collections import Counter
res = '2131236jhjjad'
res1 = Counter(res)
print(res1) # Counter({'j': 3, '2': 2, '1': 2, '3': 2, '6': 1, 'h': 1, 'a': 1, 'd': 1})
时间模块
'''
时间的三种表现形式
1、时间戳
2、结构化时间 (主要是给计算机使用)
3、格式化时间 (主要是给人看的)
'''
import time
# .time 时间戳
print(time.time()) # 1666169340.9480226
# .localtime 结构化时间
print(time.localtime()) # time.struct_time
# (tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=49, tm_sec=0,
# 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 17:56:10
print(time.strftime('%Y-%m-%d %X')) # 2022-10-19 17:56:10
'''
# strptime 按照特定时间格式将字符串转换为时间类型
'''
from datetime import datetime
Time = datetime.strptime('1314/5/20', '%Y/%m/%d')
print(Time) # 1314-05-20 00:00:00
Time1 = datetime.strptime('1314年5月20日星期六', '%Y年%m月%d日星期六')
print(Time1) # 1314-05-20 00:00:00
Time2 = datetime.strptime('1314年5月20日星期六8时8分8秒', '%Y年%m月%d日星期六%H时%M分%S秒')
print(Time2) # 1314-05-20 00:00:00
随机数模块
random
'''
random随机数模块常用方法:
'''
import random
print(random.random()) # 0.09466450124602899 随机产生0到1之间的小数
print(random.randint(0, 8)) # 0 随机产生0到8之间的整数
print(random.randrange(0, 88, 2)) # 随机产生指定的整数
print(random.choice(['100W', '200W', '1000W', '0'])) # 1000W 随机抽取一个样本
print(random.choices(['999w', '888w', '666w'])) # ['999w'] 随机抽取一个样本
print(random.sample(['Maria', 'Tank', 'Tony', 'Tom', 'Sandy'], 3)) # ['Maria', 'Tony', 'Tank'] 随机抽指定样本数
card = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K', 'Queen', 'King']
random.shuffle(card) # 随机打乱数据集
print(card) # ['8', 'Q', '2', '4', 'Queen', 'J', 'A', '3', '6', '5', '7', '9', 'King', 'K']
图片验证码
'''
产生图片验证码:每一位都可以是大写字母、小写字母、数字、4位
'''
import random
def get_code(n):
code = ''
for i in range(n):
number = str(random.randint(0, 9))
upper_number = chr(random.randint(97, 122))
lower_number = chr(random.randint(65, 90))
temp = random.choice([number, upper_number, lower_number])
code += temp
return code
res = get_code(26)
print(res) # 72mlgC8eRimd1j51Kef4xVpyt2
res = get_code(4)
print(res) # iisb
标签:py,路程,Python,random,tm,time,print,import,Day18
From: https://www.cnblogs.com/HaiMan/p/16807684.html