(本文仅做记录)

今日学习内容为模块:

1.time模块

2.datetime模块

3.collections模块

# 序列化模块:
# json  -- load dump dumps loads
# pickle -- load dump dumps loads
# shelve -- 文件 + 字典 f = shelve.open('a')

# 持久化,json跨编码语言交互

# 随机数
# random.random()    # 0-1之间小数
# random.randint()   # 起始位置,终止位置
# random.randrange() # 奇数,偶数
# choice
# choices
# import random
# random.sample   没有重复     指定一个k=?? 选择的数量
# shuffle  洗牌

# os
# os.path.join       # 路径拼接
# os.path.abspath    # 返回一个绝对路径
# os.path.dirname    # 返回是目录的路径
# os.path.basename   # 返回文件名字
# os.path.getsize    # 获取文件大小   有坑

# os.listdir
# os.makedirs
# os.rmovedirs
# os.mkdir
# os.rmdir

# os.remove
# os.rename

# sys

# sys.argv cmd交互模式下动态获取参数

import sys
# sys.path   python解释器模块查找路径
# sys.version  python解释器获取版本号
# sys.platform   操作系统平台信息
# sys.exit()   正常退出 0 异常 1


import hashlib

# md5,sha1,sha256,sha512
# 对密码加密,判断一致性(不可逆,不可解)
# 特别容易被撞库, (动态加盐)加盐

# 1.导入模块
# 2.选择加密方式
# 3.将要加密的内容转成字节然后加密
# 4.生成密文

# import hashlib
# md5 = hashlib.md5()   # 加盐
# # 实例化一个对象
# md5.update(b'wusir')
# print(md5.hexdigest())

# 2950931a0b85c648ccf14137b4b1d66f

# a5e646f24aa7314d8ba3dce048358e90

# sha1,sha256,sha512
# 密文越长,越安全
# 越慢
昨日复习:

1.time模块

  time模块最重要最重要的点就是其转化:

    

  四个转化要记住:

    字符串时间------->结构化时间:time.strptime()

    结构化时间------->字符串时间:time.strftime()

    时间戳------------->结构化时间:time.localtime()        or             time.gmtime()   (不经常用)

    结构化时间-------->时间戳:      time.mktime()

    其他的:time.time()  #返回当前时间的时间戳(1970 纪元年后经过的浮点秒数)(后两个不常用)

        time.timezone() #time.timezone 属性是当地时区(未启动夏令时)距离格林威治的偏移秒数(美洲 >0;大部分欧洲,亚洲,非洲 <= 0                                    time.tzname() #属性是包含两个字符串的元组:第一是当地非夏令时区的名称,第二个是当地的 DST 时区的名称。         

        注意,如何测定一个函数(或想测定的东西的运算时间?)start_time = time.time()      运行函数       end_time = time.time()   end_time - start_time   即可.

 

# 1. time 内置的
# import time    不需要咱们自己安装的

import time
# print(time.time()) # 浮点型(小数)  给计算机看 计算
# 三种:
# 时间戳 time.tiem
# 结构化时间 修改
# 字符串时间 给人看的

# print(time.localtime())
# 命名元组 :time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=10,
# tm_min=21, tm_sec=36, tm_wday=2, tm_yday=79, tm_isdst=0)

# print(time.strftime('%Y-%m-%d %X'))
# print(time.strftime('%Y-%m-%d %H:%M:%S'))
# 字符串时间

# 1.先转换成结构化时间
# 2.结构化转成字符串

# print(time.localtime(time.time()))
# f = time.localtime(time.time() - 86000 * 3)  # 150000000 秒  86000
# print(time.strftime('%Y-%m-%d %H:%M:%S',f))
# print(time.strftime('%Y-%m-%d %X',f))

# '2018-11-30 12:30'

# print(type(time.strftime('%Y-%m-%d %X')))

# f = time.strptime('2018-11-30 12:30','%Y-%m-%d %H:%M')
# # 支持索引 和.点的方法
# new_time = time.mktime(f) + 2*3600
# new_t = time.localtime(new_time)
# print(time.strftime('%Y-%m-%d %H:%M:%S',new_t))

# 时间戳 -- 结构化时间
# 结构化时间 -- 字符串时间

# 字符串时间 -- 结构化时间
# 结构化时间 -- 时间戳
# f = time.localtime()
# print(time.strftime('%X %Y-%m-%d',f))


t = '2019-03-20 10:40:00'
# 这个时间向后退一个月
# # 1.转成结构化
# f = time.strptime(t,'%Y-%m-%d %X')
# # 2.结构化时间转成时间戳
# ts = time.mktime(f)
# # 3.将时间戳向大变
# new_ts = ts + 86400 * 30
# # 4.将最新的时间戳转成结构化时间
# new_f = time.localtime(new_ts)
# # 5.将结构化时间转成字符串时间
# print(time.strftime('%Y-%m-%d %X',new_f))

# 获取当前时间求前一月的现在时间
# 1.获取时间戳进行减法计算
# new_ts = time.time() - 30*86400
# # 2.最新的时间戳转成结构化时间
# new_f = time.localtime(new_ts)
# # 3.将结构化时间转成字符串时间
# print(time.strftime('%Y-%m-%d %X',new_f))

# time.strftime()

# 总结:
#     6个
#       时间戳 -- 结构化   1    ****
#       结构化 -- 时间戳   1    ****
#       结构化 -- 字符串   1    ****
#       字符串 -- 结构化   1    ****
#       # time.time()     1 # 获取当前时间戳
#       # strftime()      1 # 获取当前字符串时间

# strftime('格式','结构化时间')  # 格式可以少写
# strptime('字符串时间','格式')  # 格式一一对应
time模块

注意,

  • 虽然这个模块总是可用,但并非所有的功能都适用于各个平台。
  • 该模块中定义的大部分函数是调用 C 平台上的同名函数实现,所以各个平台上实现可能略有不同
# import datetime.datetime

# print(datetime.now())  #2019-03-20 11:35:25.(471359)毫秒
# 时间对象

# f = datetime.timestamp(datetime.now())  # 将时间对象转换成时间戳
# print(datetime.fromtimestamp(f))        # 将时间戳转成时间对象

# from datetime import datetime
# print(datetime.strptime('2018-11-30','%Y-%m-%d'))
# # # 将字符串转成时间对象
# f = datetime.now()
# print(datetime.strftime(f,'%Y-%m-%d'))
# 将时间对象转成字符串

# from datetime import datetime,timedelta  # 从xx导入 建议
# print(datetime.now() - timedelta())
# 这个是datetime的精华
datetime模块
# coding:utf-8
# 数据类型补充
import time
from collections import Counter

# 计算
# c = Counter('adfasdfasdfasdfasdfasdf')

# print(c)
# print(dict(c))  #

from collections import namedtuple
# 命名元组

# tu = namedtuple('juge',['name','age','sex','hobby'])
#
# t = tu('腚哥',19,'待定','抽烟,喝酒,烫头')
# 实例一个对象
# 明确的标明每个元素是什么意思
# print(t[0])
# 对象找属性


# class A:
#     @property
#     def func(self):
#         print(11)
#
# a = A()
# a.func

from collections import deque
# 双端队列

# d = deque([1,2,3,4])
# d.append(5)      #右边添加
# print(d)
# d.appendleft(10) # 左边添加
# print(d)
# d.insert(2,99)


# print(d)
# d.remove(3)
# print(d)


# print(d.pop())
# print(d)
# print(d.popleft())
# print(d)

#队列  栈

# FIFO 先进先出
#      后进先出  先进后去


from collections import defaultdict
# 默认字典


# li = [
#     {'name':'alex','hobby':'抽烟'},
#     {'name':'alex','hobby':'喝酒'},
#     {'name':'alex','hobby':'烫头'},
#     {'name':'alex','hobby':'撩妹'},
#     {'name':'wusir','hobby':'小宝剑'},
#     {'name':'wusir','hobby':'游泳'},
#     {'name':'wusir','hobby':'打牌'},
#     {'name':'太白','hobby':'烫头'},
#     {'name':'太白','hobby':'洗脚'},
#     {'name':'太白','hobby':'开车'},
# ]

# for i in li:
#     d[i['name']].append(i['hobby'])
# print([dict(d)])

# li = [('红色',1),('黄色',1),('绿色',1),('蓝色',1),('红色',5),('绿色',1),('绿色',1),('绿色',1)]
#
# d = defaultdict(list)
# for i in li:
#     d[i[0]].append(i[1])
# dd = dict(d)
#
# for em in dd:
#     dd[em] = sum(dd[em])
#
# print(dd)

# dic = {"1":2,'2':2,'3':5,'alex':1,'wusir':2,'eva_j':3,'renjia':4}
# while 1:
#     time.sleep(0.5)
#     print(dic)
# print dic
collections模块

 

 

 

PS:

1.

内置函数:

  1.datetime模块

  2.random模块

  3.sys模块

  4.os模块  

  5.date模块

  6.json模块

  7.collections模块

第三方模块

  1.xlrd模块:Python使用xlrd模块读写Excel文件

  2.xpinyin模块:一个把汉字转成拼音的模块

  3.Image模块:Python操作图像的模块

2.

队列是先进先出,有出口和入口,先进去可以先出来。

栈就像一个箱子,后放上去的,可以先出来

堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。{堆是指程序运行是申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。

栈是先进后出的,但是于堆而言却没有这个特性,两者都是存放临时数据的地方。 对于堆,我们可以随心所欲的进行增加变量和删除变量,不要遵循什么次序,只要你喜欢。

堆(Heap)是应用程序在运行的时候请求操作系统分配给自己内存。
3.

动态获取参数
(cmd交互模式下动态获取参数)
sys.path       python 解释器模块查找路径
sys.version  Python解释器获取版本
sys.platform  操作系统平台信息
exit  正常退出值是0,异常退出值是1.
4.
 
hashlib:
md5,sha1,sha256,sha512.
用法:
密码加密
判断一致性
不可逆,不可解
特别容易被撞库,(动态)加盐(拿用户名加盐比较好)
5.
  
  1.导入模块
  2.选择加密方式
  3.将要加密的内容转换成字节然后加密
  4.生成密文
6.
import hashlib
md5 = hashlib.md5()#实例化一个对象#在此处加盐,字母和数字可在前面写b
md5.update('要加密的额内容')#纯字母和数字的话可以在前面加个b,即b'wusir'
print(md5.hexdigest())
 
sha1,sha256,sha512
越往后,密文越长,越安全,登录越慢.
7.

8.

 
for循环的底层有一个指针.
9.
 
datetime.today():返回一个表示当前本地时间的datetime对象;
datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
datetime.combine(date, time):根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
10.
 
dict直接转化为字典.

 

11.

 
类,简单来说就是一个函数的集合,在这个集合里面你定义了很多个函数;方法,其实就是你定义的这些函数。在下面的例子中Class Plus就是一个类,嵌套在这个类里面的两个函数就是所谓的方法,但是__init__只是用于初始化这个类,所以不算是方法。而get_result这个函数就是一个方法了。
 
deque:双端队列
#两头都可以添加,也可以删除
 
队列:
FIFO   先进先出
 
栈:
先进后出(精华是栈的指针)
 
collections (好好研究,很有用!!!)
Python3.6默认有序了.
 
查询当前第几天.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 
 
posted on 2019-03-20 21:47  流云封心  阅读(81)  评论(0)    收藏  举报