1.time模块
import time #python中最基本的时间模块
time.time() #时间戳 (1970年1月1日00:00:00后经过的浮点秒数)
time.localtime(time.time()) #时间元组
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=38, tm_sec=59, tm_wday=2, tm_yday=361, tm_isdst=0)
#返回的元组的内容:
#索引值(index) 属性(attribute) 值(value)
#0 tm_year(年) 例如:2016
#1 tm_mon(月) 1~12
#2 tm_mday(日) 1~31
#3 tm_hour(时) 0~23
#4 tm_min(分) 0~59
#5 tm_sec(秒) 0~60
#6 tm_wday(星期几) 0~6(0代表星期一)
#7 tm_yday(一年中的第几天) 1~366
#8 tm_isdst(是否为夏令时) 0,1,-1(-1代表夏令时)
格式化日期
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
time模块,常用内置函数
#time.time( )
返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
#time.localtime([secs])
接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。
#time.asctime([tupletime])
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
#time.strftime(fmt[,tupletime])
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
#time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
根据fmt的格式,把一个时间字符串,解析为时间元组。
#time.mktime(tupletime)
接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。
#time.sleep(secs)
推迟调用线程的运行,secs指秒数
获取日历
import calendar
cal = calendar.month(2018, 1)
print("以下输出2018年1月份的日历:")
print(cal)
2. json模块
JSON全称是(JavaScript Object Notation)是一种轻量级的数据格式,一般用于前后台,数据的交互。
导入 import json
print(json.__all__)
常用的方法:dumps、loads、dump、load
在使用之前 我们要了解两个名字 序列化和反序列化
序列化: 把一个Python对象转化成json字符串
反序列化: 把json字符串转化成python
python对象 | json对象 |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
None | null |
True/False | true/fase |
3.装饰器
装饰器(deco):
装饰函数的参数是被装饰的函数对象,返回原函数对象装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象
概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
@property
装饰过的函数返回的不再是一个函数,而是一个property对象
装饰过后的方法不再是可调用的对象,可以看做数据属性直接访问。
@staticmethod #(静态方法)
把没有参数的函数装饰过后变成可被实例调用的函数,
函数定义时是没有参数的,可以不接收参数
@classmethod (类方法)
把装饰过的方法变成一个classmethod类对象,既能能被类调用又能被实例调用。
注意参数是cls代表这个类本身。而是用实例的方法只能被实例调用。
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。
而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。
作业练习
#2. 写一个login函数 然后写一个装饰器,模拟登录过程:让程序延迟3秒
# 在延迟过程中输出正在验证
"""
def login():
print('登录成功')
"""
#/usr/bin/env python
#coding:utf-8
import time
def classmethod(func):
def login():
print('正在验证,请稍候!')
time.sleep(3)
result = func()
return result
return login
@classmethod
def f1():
print('登陆成功')
f1()
#3. 用time模块的方法,把这种格式时间的字符串 '2011-11-11'
#转成这种 时间格式:'2011/11/11'
import time
s = '2011-11-11'
t = time.strftime('%Y/%m/%d',time.strptime(s,'%Y-%m-%d'))
print(t)