python-包的使用-json与pickle模块-time与datetime模块-random模块

一、包的使用

  1. 什么是包:包就是一个含有__init__.py文件的文件夹

  2. 为何要用包

  3. 如何用包

    绝对导入:

在这里插入图片描述

#========================>m1.py
def func1():
    print('from func1')

def func2():
    print('from func2')

def func3():
    print('from func1')

def func4():
    print('from func4')
    
    
#========================>m2.py
def f1():
    print('from f1')

def f2():
    print('from f2')

def f3():
    print('from f3')

def f4():
    print('from f4')
    
    
#========================>__init__.py
print('__init__ run....')

from aaa.m1 import func1,func2,func3,func4
from aaa.m2 import f1,f2,f3,f4



#========================>run.py
import aaa  # aaa--------->__init__.py 导aaa相当于导入aaa文件夹下的__init__.py

aaa.func1()
aaa.func2()
aaa.func3()
aaa.func4()
aaa.f1()
aaa.f2()
aaa.f3()
aaa.f4()

相对导入:

在这里插入图片描述

#========================>m1.py
def func1():
    print('from func1')

def func2():
    print('from func2')

def func3():
    print('from func1')

def func4():
    print('from func4')
    
    
#========================>m2.py
def f1():
    print('from f1')

def f2():
    print('from f2')

def f3():
    print('from f3')

def f4():
    print('from f4')
    

#========================>__init__.py
print('__init__ run....')

from .m1 import func1,func2,func3,func4
from .m2 import f1,f2,f3,f4


#========================>run.py
import sys
#是使用者要处理的事情保证能找到模块
sys.path.append(r'D:\Program Files\Python\zdc\day15\dir')
import aaa

aaa.func1()
aaa.func2()
aaa.func3()
aaa.func4()
aaa.f1()
aaa.f2()
aaa.f3()
aaa.f4()

二、json与pickle模块

  1. 什么是序列化:序列化就是将内存中的数据类型转成另外一种格式

    即:

    字典========>序列化========>其他的格式========>存到硬盘

    硬盘========>其他格式========>反序列化========>字典

  2. 为什么要序列化

    1. 持久保存程序的运行状态
    2. 数据的跨平台交互
  3. 如何序列化

    json:

    ​ 优点:这种格式是一种通用的格式,所有编程语言都能识别

    ​ 缺点:不能识别所有python类型

    pickle:

    ​ 优点:能识别所有python类型

    ​ 缺点:只能被python这门编程语言识别

序列化:

import json

dic = {'k1': True, 'k2': 10, 'k3': 'egon', 'k4': '你好啊'}
dic_json = json.dumps(dic)
print(dic_json, type(dic_json))

持久化:

import json

dic = {'k1': True, 'k2': 10, 'k3': 'egon', 'k4': '你好啊'}
dic_json = json.dumps(dic)
with open('a.json',mode='wt',encoding='utf-8') as f:
    f.write(dic_json)

序列化+持久化:

import json

dic = {'k1': True, 'k2': 10, 'k3': 'egon', 'k4': '你好啊'}
with open('a.json',mode='wt',encoding='utf-8') as f:
    json.dump(dic,f)

从文件中读取json格式化的字符:

import json

with open('a.json', mode='rt', encoding='utf-8') as f:
    dic_json = f.read()

反序列化:

import json

with open('a.json', mode='rt', encoding='utf-8') as f:
    dic_json = f.read()
    dic = json.loads(dic_json)
    print(dic)

读取文件内容+反序列化:

import json

with open('a.json',mode='rt',encoding='utf-8') as f:
    dic=json.load(f)
    print(dic['k1'])

=====================================>pickle

pickle序列化:

import pickle

dic_pkl = pickle.dumps({1, 2, 3, 4})
print(dic_pkl)

pickle持久化:

import pickle

dic_pkl = pickle.dumps({1, 2, 3, 4})
with open('b.pkl', mode='wb') as f:
    f.write(dic_pkl)

pickle序列化+持久化:

import pickle

dic = {'k1': True, 'k2': 10, 'k3': 'egon', 'k4': '你好啊', }
with open('c.pkl', mode='wb') as f:
    pickle.dump(dic, f)

pickle反序列化:

import pickle

with open('b.pkl', mode='rb') as f:
    s_pkl = f.read()
    s = pickle.loads(s_pkl)
    print(s,type(s))

pickle读取内容+反序列化:

import pickle

with open('c.pkl', mode='rb') as f:
    dic = pickle.load(f)
    print(dic, type(dic))

三、time与datetime模块

time示范:

import time
1.时间戳
print(time.time())

2.格式化的字符
print(time.strftime('%Y-%m-%d %H:%M:%S %p')) #2018-12-05 18:33:19 PM

3.结构化的时间对象
print(time.localtime()) #格式化时间戳为本地的时间
print(time.localtime().tm_hour)
print(time.localtime().tm_wday)
print(time.localtime().tm_yday)
print(time.gmtime()) #将一个时间戳转换为UTC时区

#时间转换
时间戳======>struct_time======>格式化的字符串
struct_time = time.localtime(123123)
print(struct_time)
print(time.strftime('%Y-%m-%d',struct_time))

格式化的字符串======>struct_time======>时间戳
struct_time = time.strptime('2017-03-11', '%Y-%m-%d')
print(struct_time)
print(time.mktime(struct_time))

datetime示范:

import datetime

print(datetime.datetime.now()) #2018-12-05 18:50:52.414038
print(datetime.datetime.fromtimestamp(1231231) #1970-01-15 14:00:31
print(datetime.datetime.now() + datetime.timedelta(days=3)) #三天后的时间
print(datetime.datetime.now() - datetime.timedelta(days=3)) #三天前的时间
print(datetime.datetime.now() + datetime.timedelta(days=-3)) #三天前的时间
print(datetime.datetime.now() + datetime.timedelta(days=3,hours=3)) #三天零三小时前的时间

四、random模块

import random

print(random.random()) #随机0-1之间的小数
print(random.randint(1,3)) #随机1-3之间的整数 
print(random.randrange(1,3)) #随机1-3之间的整数不包含3
print(random.uniform(1,3)) #随机1-3之间的小数
print(random.choice([1,'a','c'])) #随机生成数字和字母
print(random.sample([1,'a','c'],2)) #随机生成数字和字母2个

item = [1, 3, 5, 7, 9]
random.shuffle(item) #洗牌
print(item) 

随机生成验证码

import random

def make_code(max_size=5):
    res = ''
    for i in range(max_size):
        num = str(random.randint(0, 9))
        alp = chr(random.randint(65, 90))
		res += random.choice([num, alp])

    return res

print(make_code(10))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值