python 内置模块详解
一.random模块 随机
random() 随机小数
uninform(a,b)随机小数
randint(a,b) 随机整数
choice()随机选择一个
sample()随机选择多个
shuffle()打乱
importrandom fromrandomimportrandint print(randint(10,20)) #print(random.randint(10,20))/ print(random.random()) print(random.uniform(10,20))#10-20的随机小数 lst=['宝宝','宝浪','宝强','包拯'] random.shuffle(lst)#随机打乱顺序 print(lst) #从列表中随机选择一个 print(random.choice(["林志玲","刘一菲","王昭君","艾米","宝宝"])) print(random.sample(["林志玲","刘一菲","王昭君","艾米","宝宝"],3))#可以给随机选取几个
二.Counter计数
fromcollectionsimportCounter print(Counter('宝宝今年特别喜欢王宝强'))#计数 lst=['jay','jay','jay','宝宝','宝宝','胡辣汤','上官婉儿'] c=Counter(lst) print(c.get('宝宝'))
三.字典
1.默认值字典
fromcollectionsimportdefaultdict dd=defaultdict(lambda:'胡辣汤')#callable可调用的,字典是空的 print(dd['张无忌'])#从字典向外拿数据.字典是空的.key:callable() print(dd['宝宝'])#这里的[]和get()不是一回事儿 print(dd)
2.有序字典
fromcollectionsimportOrderedDict dic=OrderedDict()#有序字典 dic['a']='哈哈' dic['b']='呵呵' print(dic) print(dic.get('a')) print(dic.values()) print(dic['a'])
四.栈和队列
1.栈
特点:先进后出
classStackFullException(Exception): pass classStackEmptyException(Exception): pass classStack: def__init__(self,size): self.size=size给定存放数据的长度 self.lst=[]#存放数据的列表 self.top=0#栈顶指针 #入栈 defpush(self,el): ifself.top>=self.size: raiseStackFullException('yourstackisfull!!') self.lst.insert(self.top,el)#放元素 self.top+=1#栈顶指针向上移动一下 #出栈 defpop(self): ifself.top==0: raiseStackEmptyException('yourstackisempty!!!') self.top-=1 el=self.lst[self.top] returnel s=Stack(6) s.push('宝宝') s.push('我还') s.push('记得') print(s.pop()) print(s.pop()) print(s.pop())
2.单项队列
特点:先进先出
importqueue q=queue.Queue() q.put('李嘉诚1') q.put('李嘉诚2') q.put('李嘉诚3') q.put('李嘉诚4') q.put('李嘉诚5') print(q.get()) print(q.get()) print(q.get()) print(q.get()) print(q.get())
3.双向队列
特点:和单项一样
fromcollectionsimportdeque d=deque()#创建双向队列 d.append('宝宝')#在右侧添加 d.append('no') d.append('way') d.append('哈哈') d.appendleft('娃哈哈')#在左边添加 d.appendleft('爽歪歪') d.appendleft('优酸乳') print(d.pop())#从右边拿数据 print(d.pop())#从右边拿数据 print(d.pop())#从右边拿数据 print(d.pop())#从右边拿数据 print(d.popleft())#从左边拿数据 print(d.popleft())#从左边拿数据 print(d.popleft())#从左边拿数据
五.time模块
#时间戳:从1970-01-0100:00:00开始计算.未来存储的时候用时间戳
print(time.time())
#格式化时间
print(time.strftime('%Y-%m-%d%H:%M:%S')) #用来显示的
#结构化时间(python的时间)
t=time.localtime()
print(t.tm_year)
print(t.tm_mon)
print(t.tm_mday)
#数据库里存储一个数字.把它还原成我们的格式化时间
a=847772281.0
#先把这个时间戳转换成python中的结构化时间
t=time.localtime(a) #结构化时间括号里填的是秒time.localtime(秒)#本地化的东八区的时间
#t=time.gmtime(a) #格林尼治时间
s=time.strftime('%Y-%m-%d%H:%M:%S',t) #time.strftime(格式化格式,传入结构化转化完的时间t)
print(s)
#让用户输入一个时间.然后把时间转化成时间戳
strt=input('请输入一个时间:')
#把字符串转化成结构化时间
t=time.strptime(strt,'%Y-%m-%d%H:%M:%S')
#转化成时间戳
print(time.mktime(t)) #847772281.0 #本地化的东八区的时间
六.functools
1.wraps
fromfunctoolsimportwraps#可以改变一个函数的名字,注释.... defwrapper(fn): @wraps(fn)#把inner的名字改变成原来的func definner(*args,**kwargs): print('前') ret=fn(*args,**kwargs) print('后') returnret returninner @wrapper#func=wrapper(func) deffunc(): print('哈哈哈') print(func.__name__)#func
2.reduce
deffunc(a,b): returna+b#0+1 #会把我们每一个数据交给func去执行,把默认值作为第一个参数传递给函数 ret=reduce(func,[1,4,7,8,6,9],0) print(ret) print(reduce(lambdax,y:x+y,[iforiinrange(101)]))
3.partial
fromfunctoolsimportpartial defchi(zhushi,fushi): print(zhushi,fushi) chi2=partial(chi,fushi="辣鸡爪") chi2('大米饭') chi2('小米饭') chi2('黑米饭')
七.命名元组namedtuple
p=namedtuple('Point',["x","y"]) p1=p(10,20) print(p1) print(p1.x) print(p1.y)
八.OS模块系统操作
1.os
#必须要记住.很常用 os.makedirs('baby/安哥拉/特斯拉')#可以一次性创建多级目录 os.mkdir('baby/安哥拉/特斯拉/bb')#上层文件夹必须存在 os.removedirs('baby/安哥拉/特斯拉/bb')#目录不是空,不能删除#可以帮我们删除当前这个目录级中的所有空文件夹 #可以记住一般不删数据 os.rmdir('baby/安哥拉/特斯拉')#指定文件夹删除 os.system('dir') print(os.popen('dir').read())#执行shell脚本或者cmd命令 print(os.getcwd())#当前程序运行的文件夹D:\python_workspace_s18\day23内置模块02 os.chdir('baby') #os.path和路径相关的内容 print(os.path.abspath('baby'))#把相对路径改成绝对路径 print(os.path.split(r'D:\python_workspace\内置模块\baby\1.txt'))#切割文件和文件路径 print(os.path.dirname(r'D:\python_workspace\内置模块\baby\1.txt')) #文件路径 print(os.path.basename(r'D:\python_workspace\内置模块\baby\1.txt')) #文件 print(os.path.existsr'D:\python_workspace\内置模块\baby\1.txt')) #判断文件是否存在 print(os.path.abspath('1.txt'))
2.sys模块
importsys print(sys.path)#找到模块的.必须要记住.模块的搜索路径 sys.path.append(r'D:\python_workspace\内置常用模块') print(sys.path)
九.自定义模块和包
import
fromxxximportxxxx
一个表达式->一条语句 ->语句块 ->函数->类 ->模块 ->包 ->项目
包就是我们的文件夹,包内可以写很多个模块.
查找路径是:sys.path,随动.跟着你的启动文件所在的位置变化
不论使用绝对导入.还是相对导入.启动文件一定在最外面
1.模块
写的一个py文件就可以称作一个模块
2.包
文件夹里装很多模块的就是包