笔记:Python复习及模块(time、datetime)
一、复习
1、Python的数据类型
.strip() 字符串过滤空格,有事没事,你用一下,只能过滤前和尾的空格。
print(" a1 b 2c3d4".strip())
.replace(old, new) 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
str = "www.baidu.cn" print("旧地址:", str) print("新地址:", str.replace("baidu.cn","baidu.com"))
.find(sub) 字符串查找sub字符串的内容,如果找到,返回自字符串的下标,否则返回-1
str = "www.baidu.cn" print(str.find('w',1)) print(str.find('w',3))
.format() 字符串格式化
print("hello'{0} {1}".format('s','yangyuanqiang'))
.split() 切割字符串
print("a1b1c1d2".split("1"))
.join() 列表追加
a = ["a", "b", "c", "d", "e"] print("-------".join(a))
.startswith() 用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False
print("asdfasjdfas".startswith("asdfas"))
index 下标
count 统计
tuple 强制类型
a =(1, 2, 3, 1, 5, 6) print(a.index(5)) print(a.count(1))
list 列表是由一序列特定顺序排列的元素组成的。可以把字符串,数字,字典等都可以任何东西加入到列表中日中的元素之间没有任何关系。列表也是自带下标的,默认也还是从0开始。
# 列表常用的方法
# append() 屁股后追加
# pop() 最后删除,返回值是删除的那个元素
# index(x) 返回元素的下标
# remove(value) l.remove("hello"),删除一个指定值的元素
# sort(self,cmp=None,key=None,reverse=False) l.sort 排序
# reverse() l.reverse() 反序,无返回值
# insert() l.insert(3,"ling"),插入指定的位置一个元素
2、dict常用的方法:
get(k) 返回key所对应的value
setdefalut(k , v) 如果ke有不存在,设置一个默认值v,并返回v,如果k存在,返回k反对应的value
keys() 获得所有keys
valus() 获得所有valuse
iteritems() for i,j in d.iteritems():print(i,j)
注意:python2里有才iteritems()类,而在python3里是items
update() m.update(n) m,n都是dict
pop(k) 删除k:v对应的元素
zip(l1 , l2) 高阶函数,dict(zip(l1,l2) 把l1和l2转换成
mm = dict(a=1,b=10,c=3,d=9)
print sorted(mm.iteritems(), key = lambda d:d[1], reverse = True)
二、Python的模块
ython 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
例子
下例是个简单的模块 support.py:
def print_func( par ): print "Hello : ", par return
import 语句
模块的引入
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import module1[, module2[,... moduleN]
比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:
模块名.函数名
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。
#!/usr/bin/env python # -*- coding: utf-8 -*- # 导入模块 import time
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
from…import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块 fib 的 fibonacci 函数,使用如下语句:
from fib import fibonacci
这个声明不会把整个 fib 模块导入到当前的命名空间中,它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表
from…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
例如我们想一次性引入 math 模块中所有的东西,语句如下:
from math import *
time模块
time模块是包含各方面对时间操作的函数. 尽管这些常常有效但不是所有方法在任意平台中有效. time用struct_time表示时间
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/23 21:24 # @Author : yangyuanqiang # @File : demon1.py import time print(time.localtime()) print(time.localtime().tm_year)
以上实例输出的结果
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=23, tm_hour=21, tm_min=43, tm_sec=44, tm_wday=0, tm_yday=113, tm_isdst=0)
2018
函数
- time.time(): 返回一个时间戳
- time.asctime([t]): 转换gmtime()和localtime()返回的元组或struct_time为string.
- time.clock(): 在第一次调用的时候, 返回程序运行的时间. 第二次之后返回与之前的间隔.
- time.ctime([secs]): 将时间戳转换为时间字符串, 如没有提供则返回当前的时间字符串,并与asctime(localtime())一样.
- time.gmtime([secs]): 将时间戳转化为, UTC 时区的struct_time.
- time.localtime([secs]): 类似gmtime()但会把他转换成本地时区.
- time.mktime(t): struct_time 转化为时间戳.
- time.sleep(secs): 线程推迟指定时间, 以秒为单位.
- time.strftime(format[,t]): 根据参数转换一个sturc_time或元组为字符串.
- time.strptime(string[, format]): 与strftime相反,返回一个struct_time.
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/23 21:24 # @Author : yangyuanqiang # @File : demon1.py import time # print(time.localtime()) # print(time.localtime().tm_year) print(time.asctime(time.gmtime())) print(time.clock()) print(time.sleep(1)) print(time.clock()) print(time.ctime()) print(time.strftime('%Y-%m-%d', time.localtime())) print(time.mktime(time.localtime()))
以上实例输出的结果
Mon Apr 23 13:46:47 2018 0.063216 None 0.063362 #因计算机而异 Mon Apr 23 21:46:48 2018 2018-04-23 1524491208.0
time模块中常用的格式化字符串
- %y 两位数的年份 00 ~ 99.
- %Y 四位数的年份 0000 ~ 9999
- %m 月份 01 ~ 12.
- %d day 01 ~ 31.
- %H 时 00 ~ 23.
- %I 时 01 ~ 12.
- %M 分 00 ~ 59.
- %S 秒 00 ~ 61.
datetime模块
datetime模块中包含如下类:
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
datetime_CAPI | 日期时间对象C语言接口 |
timedelta | 时间间隔,即两个时间点之间的长度 |
tzinfo | 时区信息对象 |
datetime模块中包含的常量
常量 | 功能说明 | 用法 | 返回值 |
---|---|---|---|
MAXYEAR | 返回能表示的最大年份 | datetime.MAXYEAR | 9999 |
MINYEAR | 返回能表示的最小年份 | datetime.MINYEAR | 1 |
date类
date类对象构成
date对象由year
年份、month
月份及day
日期三部分构成:
date(year,month,day)
通过year
, month
, day
三个数据描述符可以进行访问:
>>> a = datetime.date.today() >>> a datetime.date(2018, 4, 23) >>> a.year 2018 >>> a.month 4 >>> a.day 23
当然,你也可以用__getattribute__(...)
方法获得上述值:
>>> a.__getattribute__('year') 2018 >>> a.__getattribute__('month') 4 >>> a.__getattribute__('day') 23
date对象中包含的方法与属性
1、用于日期比较大小的方法
方法名 | 方法说明 | 用法 |
---|---|---|
__eq__(…) | 等于(x==y) | x.__eq__(y) |
__ge__(…) | 大于等于(x>=y) | x.__ge__(y) |
__gt__(…) | 大于(x>y) | x.__gt__(y) |
__le__(…) | 小于等于(x<=y) | x.__le__(y) |
__lt__(…) | 小于(x | x.__lt__(y) |
__ne__(…) | 不等于(x!=y) | x.__ne__(y) |
以上方法的返回值为TrueFalse
2、ISO标准化日期
如果想要让所使用的日期符合ISO标准,那么使用如下三个方法:
1).* isocalendar(...)
*:返回一个包含三个值的元组,三个值依次为:year
年份,week number
周数,weekday
星期数(周一为1…周日为7):
示例如下
>>> a = datetime.date(2018,4,23) >>> a.isocalendar() (2018, 17, 1) >>> a.isocalendar()[0] 2018 >>> a.isocalendar()[1] 17 >>> a.isocalendar()[2] 1
2). isoformat(...)
: 返回符合ISO 8601标准 (YYYY-MM-DD
) 的日期字符串;
示例如下
>>> a = datetime.date(2017,3,22) >>> a.isoformat() '2017-03-22'
3). isoweekday(...)
: 返回符合ISO标准的指定日期所在的星期数(周一为1…周日为7)
示例如下:
>>> a = datetime.date(2017,3,22) >>> a.isoweekday() 3
4).与isoweekday(...)
相似的还有一个weekday(...)
方法,只不过是weekday(...)
方法返回的周一为 0, 周日为 6
示例如下:
>>> a = datetime.date(2017,3,22) >>> a.weekday() 2
日期的字符串输出
1、如果你想将日期对象转化为字符串对象的话,可以用到__format__(...)
方法以指定格式进行日期输出:
>>> a = datetime.date(2017,3,22) >>> a.__format__('%Y-%m-%d') '2017-03-22' >>> a.__format__('%Y/%m/%d') '2017/03/22' >>> a.__format__('%y/%m/%d') '17/03/22' >>> a.__format__('%D') '03/22/17'
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 |
当前时区的名称 |
%% |
%号本身 |