目录

  • 第一部分:Python
  • 一.数值与日期
  • 二.对象持久化


第一部分:Python

一.数值与日期

1.数值显示:‘数值:{}’.format(a) 也可以写作 f ‘数值:{a}’,其中的f等价于.format()
注: f ‘数值:{b:,.2f}’----其中f等价于format,冒号前为对应的变量名,逗号规定格式为三位一个逗号,.2f规定类型为保留两位小数(四舍五入)的float类型。
2.数值处理:调用math模块----import math
math.trunc()----无论正负,都是取整数部分
math.floor()----向下取整
math.ceil()----向上取整
round(b,3)----系统函数,四舍五入取整,对b保留三位小数处理
3.random模块中的函数:import random
random.choice(a)----从a序列中随机找出一个元素
random.sample(a,3)----从a序列中随机找出三个元素组成序列
random.shuffle(a)----打乱a序列的顺序
random.randint(a,b)----随机产生a到b之间的一个整数,可取b
random.random()----随机产生0-1之间的一个浮点数
4.日期与时间:导入datetime模块----import datetime
1).日期:datetime.date(年,月,日),有年、月、日属性:

import datetime
today = datetime.date.today()
today.year
Out[10]: 2020
today.month
Out[11]: 2
today.day
Out[12]: 15

2).时间:datetime.time(小时,分钟,秒),有.hour , .minute , .second属性。
3).日期与时间:datetime.datetime

datetime.datetime.now()
Out[13]: datetime.datetime(2020, 2, 15, 16, 38, 30, 539044)

4).日期与字符串间的转换:
日期时间转换到字符串:datetime.datetime.strftime(‘格式’)
字符串转换到日期时间:datetime.datetime.strptime(字符串,‘格式’)
其中%Y–四位年份,%y–两位年份,%m–两位月份,%d–两位日期,%H–两位小时,%M–两位分钟,%S–两位秒数:

s = '2018-5-14'
datetime.datetime.strptime(s,'%Y-%m-%d')
Out[15]: datetime.datetime(2018, 5, 14, 0, 0)

5).时间跨度处理:datetime.timedelta(days,seconds),两个参数分别表示时间跨度的天数和秒数:

begin = datetime.datetime(2019,3,12,12,8)
begin + datetime.timedelta(320,3600)
Out[17]: datetime.datetime(2020, 1, 26, 13, 8)

二.对象持久化

1.概述:实际编程过程中,需要将内存中的文件保存下来,以便下次继续使用,这就涉及到数据的序列化和反序列化。
2.扁平文件:如文本文件,存储的都是字符串格式,写入时需要用str进行类型转换,而读出时默认时字符串类型,需要用python内置的eval()函数转换为python表达式:

# 假设data.txt文件中只存储了一行列表
with open('data.txt','r',encoding='utf8') as f:
    l = eval(f.read())
    print(l)

注:实际编程中,文本文件一般只存储字符串类型的数据
3.pkl文件:导入pickle模块
pickle.dumps(obj)----将对象序列化为字符串
pickle.loads(s)----将字符串反序列化为对象
pickle.dump(obj,file)----将对象序列化为字符串并写入文件
pickle.load(file)----将文件内容反序列化为对象
注:pickle模块下的写入和读出文件必须为二进制,一个.pkl尽量要存储相同类型的数据,否则反序列化时会出现问题,实际中这种按对象类型存储的方式不利于代码管理。
4.利用shelve模块,采用键值的方式存储数据,更加灵活和实用:

import shelve

s = {'name':'Tom','age':22}
scores = [88,89,90]

db = shelve.open('shelve_student')
db['s'] = s
db['scores'] = scores
del(db['s'])
print(len(db))
db.close()

注:shelve.open()中不需要指明读写模式,采用文件名[‘键名’]=值的方式存储对象。