第十章-自带电池——python基础教程(第二版)笔记

标准库的使用

10.2探究模块

#10.2.1模块中有什么
#1.dir
import copy
print [n for n in dir(copy) if not n.startswith('_')]
'''
['Error', 'PyStringMap', 'copy', 'deepcopy', 'dispatch_table', 'error', 'name', 't', 'weakref']
输出copy模块中所有不以'_'开头的名字,'_'开头的不能引用
'''

#2.__all__变量
print copy.__all__
'''
['Error', 'copy', 'deepcopy']
'''

#10.2.2用help帮助
print help(copy.copy)
'''
Help on function copy in module copy:

copy(x)
    Shallow copy operation on arbitrary Python objects.

    See the module's __doc__ string for more info.

None

'''
print copy.copy.__doc__
'''
Shallow copy operation on arbitrary Python objects.

    See the module's __doc__ string for more info.
'''

#10.2.3文档
print range.__doc__
'''
range(stop) -> list of integers
range(start, stop[, step]) -> list of integers

Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3].  The end point is omitted!
These are exactly the valid indices for a list of 4 elements.
'''

#10.2.4使用源代码
print copy.__file__
'''
C:\Python27\lib\copy.pyc
'''

10.3标准库:一些最爱

#10.3标准库:一些最爱
#10.3.1sys(访问与Python解释器连接紧密的变量和函数
#reverseargs.py
import sys
args=sys.argv[1:]
args.reverse()
print ''.join(args)
print ''.join(reversed(sys.argv[1:]))   #不知道为什么两个都输出不了
'''
argv命令行参数,包括脚本名称
exit([arg])退出当前程序,可选参数为给定的返回值或者错误信息
modules映射模块名字到载入模块的字典
path查找模块所在目录的目录列表
platform类似sunos5或者win32的平台标识符
stdin标准输入流
stdout标准输出流
stderr标准错误流
'''
#10.3.2os提供访问多个操作系统服务的功能
#10.3.3fileinput遍历文本文件的所有行
   #第11章详细介绍
#10.3.4集合,堆和双端队列
    #1.集合
print set(range(10))   #结果  set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print set(['a','b','c'])  #结果  set(['a', 'c', 'b'])

a=set([1,2,3])
b=set([2,3,5])
print a.union(b)   #求并集  结果  set([1, 2, 3, 5])

c=a&b
print c.issubset(a)
print c<=a
print c.issuperset(a)
print c>=a
print a.intersection(b)
print a&b
print a.difference(b)
print a-b
print a.symmetric_difference(b)
print a^b
print a.copy()
print a.copy() is a
'''
结果
True
True
False
False
set([2, 3])
set([2, 3])
set([1])
set([1])
set([1, 5])
set([1, 5])
set([1, 2, 3])
False
'''
a=set()
b=set()
print a.add(frozenset(b))  #集合的集合  结果  None

    #2.堆heap
from heapq import *  #堆库
from random import shuffle
data=range(10)
shuffle(data)
heap=[]
for n in data:
    heappush(heap,n)  #将n入堆
print heap  #结果 [0, 1, 3, 4, 2, 8, 7, 9, 6, 5] 有规律,i位置的元素比2i和2i+1位置的元素小(堆属性)
heappush(heap,0.5)   #将0.5按堆规则入堆
print heap   #结果 [0, 0.5, 4, 3, 1, 8, 7, 9, 5, 6, 2]

print heappop(heap)   #将堆中最小的元素输出  结果 0
print heap   #[0.5, 1, 2, 3, 4, 7, 8, 5, 9, 6]

heap=[10,9,8,7,6,5,4,3,2,1]
heapify(heap) #将heap转化为堆属性
print heap  #结果  [1, 2, 4, 3, 6, 5, 8, 10, 7, 9]

print heapreplace(heap,0.5) #输出最小的元素,且将0.5加入堆  结果1
print heap  #结果[0.5, 2, 4, 3, 6, 5, 8, 10, 7, 9]

    #3双堆队列(double-ended queue 或者 deque)
from collections import deque
q=deque(range(5))
q.append(5)
q.appendleft(6)
print q
print q.pop()
print q.popleft()
print q.rotate(3)
print q.rotate(-1)
print q
'''
结果
deque([6, 0, 1, 2, 3, 4, 5])
5
6
None
None
deque([3, 4, 0, 1, 2])
'''

#10.3.5time 获得当前时间、操作时间和日期、从字符串读取时间及格式化时间为字符串
#print time.ascyime() #将当前时间格式化字符串

#10.3.6random
from random import *
from time import *
date1=(2017,3,15,0,0,0,-1,-1,-1)
time1=mktime(date1)
date2=(2018,3,15,0,0,0,-1,-1,-1)
time2=mktime(date2)
random_time=uniform(time1,time2)
print asctime(localtime(random_time))  #结果Tue Feb 20 13:59:04 2018  随机的在time1-time2之间生成随机时间

from random import randrange
num=2
sides=3
sum=0
for i in range(num):sum+=randrange(sides)+1
print "result",sum  #结果 4(随机)

#10.3.7 shelve简单的存储方案
    #1.潜在的陷阱
import shelve
s=shelve.open('test.dat')
s['x']=['a','b','c']
s['x'].append('d')
print s['x']   #结果 ['a', 'b', 'c']  没有'd',还没来得及存储
temp=s['x']
temp.append('d')
s['x']=temp
print s['x']  #结果 ['a', 'b', 'c', 'd']

    #2.简单的数据库示例

#10.3.8 re 正则表达式

    #1.什么是正则表达式——可以匹配文本片段的模式
#  '.'通配符,可以代表任意字符
#对特殊字符进行转义  Python\\.py
#匹配字符集。'[pj]ython',可以表示python和jython,'[a-z]'表示字母a-z,'[a-zA-Z0-9]'表示大小写字母和数字,'[^abc]'匹配所以除了abc的字符
#选择符和子模式,例:只去pytgon和perl,两种方式 “python|perl","p(ython|erl"
#可选项和重复子模式
#。。。

    #2.re模块的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值