8.2.1
import random#
test = random.randint(1,10)#使用random模块中的randint()方法
print('生成一个随机数：',test)
8.4.1
import sys
for i in range(5):
    if i == 3:
        sys.exit(0)    # 正常退出
    else:
        print(i, end=' ')
python3 test.py    # 执行文件
0 1 2 
for i in range(5):
    if i == 3:
        sys.exit('aaaaa')    # 退出并打印提示信息
    else:
        print(i, end=' ')
python3 test.py    # 执行文件
0 1 2 aaaaa    # 提示信息也被打印出来了

import time
>>> time.time()
import time
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=30, tm_hour=15, tm_min=21, tm_sec=24, tm_wday=1, tm_yday=303, tm_isdst=0)
import time
>>> time.localtime(1200060000)    # 传入一个时间戳
time.struct_time(tm_year=2008, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=11, tm_isdst=0)
import time
>>> time.asctime()
'Tue Oct 30 15:41:01 2018'
>>> time.ctime(1200060000)
'Fri Jan 11 22:00:00 2008'
import time
>>> time.strftime('%Y-%m-%d')    # 分隔符可以自由指定
'2018-10-30'
>>> time.strftime('%Y/%m/%d')
'2018/10/30'
>>> time.strftime('%Y/%m/%d', time.localtime(1200060000))
'2008/01/11'
>>> from collections import deque
>>> lst = [2, 5, 7, 9]
>>> dlst = deque(lst)    # 必须先将列表转化为deque对象
>>> dlst    # deque对象
deque([2, 5, 7, 9])
>>> dlst.append(12)    # 添加到末尾
>>> dlst
deque([2, 5, 7, 9, 12])
>>> dlst.appendleft(15)    # 添加到首位
>>> dlst
deque([15, 2, 5, 7, 9, 12])
>>> dlst.pop()    # 删除末尾值
12
>>> dlst
deque([15, 2, 5, 7, 9])
>>> dlst.popleft()    # 删除首位值
15
>>> dlst
deque([2, 5, 7, 9])
>>> dlst
deque([2, 5, 7, 9])
>>> dlst.rotate(3)    # 顺时针旋转3个位置
>>> dlst
deque([5, 7, 9, 2])
>>> dlst.rotate(-1)    # 逆时针旋转一个位置
>>> dlst
deque([7, 9, 2, 5])
>>> import calendar
>>> cal = calendar.month(2018, 10)
>>> print(cal)
    October 2018
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
>>> import calendar
>>> calendar.isleap(2018)
False
>>> calendar.isleap(2012)
True
>>> import datatime
>>> td = datetime.date.today()    # 生成一个日期对象
>>> td    # 可以利用这个日期对象操作各种属性和方法
datetime.date(2018, 10, 30)
>>> print(td)    # 以字符串的形式打印日期
2018-10-30
>>> print(td.ctime())    # 调用对象的ctime()方法，将日期转换为星期、月、日、时间、年
Tue Oct 30 00:00:00 2018
>>> print(td.timetuple())    # 调用对象的timetuple()方法，将日期转换为时间元组    time.struct_time(tm_year=2018, tm_mon=10, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=303, tm_isdst=-1)
>>> print(td.toordinal())    # 调用对象的toordinal()方法，将日期转换为ordinal时间
736997
>>> print(td.year)    # 调用对象的year属性，取出日期对象的年
2018
>>> print(td.month)    # 调用对象的month属性，取出日期对象的月
10
>>> print(td.day)    # 调用对象的day属性，取出日期对象的日
30
>>> print(datetime.date.fromordinal(736997))    # 调用对象的fromordinal()方法，    2018-10-30                              # 将ordinal时间转换为字符格式的时间
>>> print(datetime.date.fromtimestamp(time.time()))    # 调用date类的        2018-10-30                    # fromtimestamp()方法将时间戳转换为字符格式的时间
>>> d1 = datetime.date(2018, 10, 29)    # 实例化date类对象
>>> d1
datetime.date(2018, 10, 29)
>>> print(d1)
2018-10-29
>>> d2 = d1.replace(year=2008, day=9)    # 调用对象的replace()方法，修改日期
>>> print(d2)                         # 并返回一个新的已修改的日期对象
2008-10-09
>>> import datatime
>>> [item for item in dir(datetime.time) if not item.startswith('_')]
['dst', 'fold', 'fromisoformat', 'hour', 'isoformat', 'max', 'microsecond', 'min', 'minute', 'replace', 'resolution', 'second', 'strftime', 'tzinfo', 'tzname', 'utcoffset']
可以看到time类中有很多的方法和属性，就几个常用的作简单介绍。
>>> tm = datetime.time(1, 2, 3)    # 生成time类对象
>>> tm
datetime.time(1, 2, 3)
>>> print(tm)
01:02:03
>>> print(tm.hour)    # 调用对象的hour属性，取出时间对象的时
1
>>> print(tm.minute)    # 调用对象的minute属性，取出时间对象的分
2
>>> print(tm.second)    # 调用对象的second属性，取出时间对象的秒
3
>>> print(tm.tzinfo)    # 调用对象的tzinfo属性，取出时间对象的时区信息
None

>>> import datatime
>>> now = datetime.datetime.now()    # 获取当前时间
>>> print(now)
2018-10-30 20:59:34.799856
>>> b = now + datetime.timedelta(hours=5)    # 对now增加5小时
>>> print(b)
2018-10-31 01:59:34.799856
>>> c = now + datetime.timedelta(weeks=2)    # 对now增加两周
>>> print(c)
2018-11-13 20:59:34.799856
>>> d = c - b    # 计算时间差
>>> print(d)
13 days, 19:00:00

>>> import json
>>> json.__all__
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']
1. encoding:dumps()
>>> data = [{'name': 'xx', 'lang': ('python', 'java'), 'age': 22}]
>>> data
[{'name': 'xx', 'lang': ('python', 'java'), 'age': 22}]
>>> data_json = json.dumps(data)
>>> data_json
'[{"name": "xx", "lang": ["python", "java"], "age": 22}]'
# 序列化
import pickle
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))    
<class 'dict'>
j=pickle.dumps(dic)
print(type(j))     
<class 'bytes'>
f=open('序列化对象_pickle','wb')    # 注意是w是写入str,wb是写入bytes,j是'bytes'
f.write(j)   # 等价于pickle.dump(dic,f) 
f.close()
# 反序列化
import pickle
f=open('序列化对象_pickle','rb')
data=pickle.loads(f.read())    # 等价于data=pickle.load(f) 
print(data['age'])




