【笔记】Python3.X笔记
来源:互联网 发布:国家商品诚信数据库 编辑:程序博客网 时间:2024/05/16 03:20
基于Python3.X版本进行学习,笔记如下:
杨辉三角
def triangle(max): L=[1] n=1 while n<=max: yield L L.append(0) L=[L[i-1]+L[i] for i,x in enumerate(L)] n=n+1g=triangle(10)for items in g: print(items)
名字格式化
def rightname(name): return name[0].upper()+name.lower()[1:]print(list(map(rightname,['admin','LISA','barT'])))
迭代器
两个基本的方法:iter()和next()
import syslist=[1,2,3,4]it=iter(list)
while True: try: print (next(it)) except StopIteration: sys.exit()
生成器
py中使用了yield的函数被称为生成器generator
生成器只能用于迭代操作,简单说来,生成器就是一个迭代器
在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存
当前所有的运行信息,返回yield的值,
并在下一次执行next()方法时从当前位置继续执行。
排序
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def by_name(t): return t[1]L2=sorted(L,key=by_name,reverse=True)print(L2)
模块
在Python中,一个.py文件就称为一个模块(module)
当一个模块编写完毕,就能被其他地方引用,模块还包括
Python内置模块和来自第三方的模块。
包:
按目录来组织模块的方法。例如新建一个顶层包
mypackage,abc.py模块的名字就变成了mypackage.abc
注意:每一个包目录下面都会有一个init.py的文件,这个文件必须存在,否则Python将把这个目录当成
普通目录,而不是一个包。init.py可是一个空文件。
在包下可有多级目录。如mypackage.web.www
命名注意:自己的模块命名时不要和Python的内置模块冲突。
第三方模块使用-PIL
from PIL import Imageim=Image.open('test.png')print(im.format,im.size,im.mode)im.thumbnail((200,100))im.save('thumb.jpg','JPEG')
类
class Student(object): """docstring for Student""" def __init__(self, name,score): self.name = name self.score=score def print_score(self): print('%s: %s' % (self.name,self.score))bart=Student('Bart Simpson',59)lisa=Student('lisa Simpson',69)bart.print_score()lisa.print_score()
继承与多态
继承:
可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只要新增自己特有的方法,也能够把
父类不适合的方法覆盖重写。
注意:静态语言与动态语言的继承体系。动态语言——“鸭子类型”——”file-like object”
使用@property属性
class Screen(object): @property def width(self): return self._width @width.setter def width(self,value): self._width=value @property def height(self): return self._height @height.setter def height(self,value): self._height=value @property def resolution(self): return self.width * self.heights=Screen()s.width=1024s.height=768print(s.resolution)print(s.width)
链式调用
class Student(object): """docstring for Student""" def __init__(self, path=''): self.__path = path def __getattr__(self,path): path1=self.__path+path+'/' return Student(path1) def __call__(self,*path): path1=self.__path+path[0]+'/' return Student(path1) def __str__(self): sum =len(self.__path) self.__path=self.__path[:sum-1] return self.__path __repr__=__str__print(Student().user('Bob').repos)print(Student().status.user.timeline.list)
枚举
from enum import Enum,unique@uniqueclass Weekday(Enum): Sun=0 Mon=1py Tue=2 Wed=3 Thu=4 Fri=5 Sat=6day1=Weekday.Monprint('day1=',day1)print('Weekday.Tue=',Weekday.Tue)print('Weekday[\'Tue\']=',Weekday['Tue'])print('Weekday.Tue.value=',Weekday.Tue.value)print('day1==Weekday.Mon ?',day1==Weekday.Mon)print('day1==Weekday.Mon ?',day1==Weekday.Tue)print('day1==Weekday(1) ?',day1==Weekday(1))for name,member in Weekday.__members__.items(): print(name,'=>',member)Month=Enum('Month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))for name,member in Month.__members__.items(): print(name,'=>',member,',',member.value)
单元测试、文档测试
IO
(1)读取文本文件
打开f=open(‘url’,’r’);—-读f.read()将内容读到内存—-关闭
f.close()文件使用完毕后必须关闭
使用try…finally来实现文件读写
另一种方法:
with open('url','r') as f:printf(f.read())
注意所读取的文件大小
(2)读取二进制文件
f=open('url','rb')f=read()
(3)读取GBK文件
f=open('url','r',encoding='gbk',errors='ignore')f.read()
(4)写文件
f=open('url','w')f.write('str')f.close()
另一种方法:with
with open('url','w') as f: f.write('str')
从内存中读取—StringIO和BytesIO
操作文件和目录-os模块 import os shutil模块,os模块的补充
序列化\反序列化
import jsond=dict(name='bob',age=20,score=88)print(json.dumps(d))
WSGI处理函数
def application(environ,start_response): start_response('200 OK',[('Content-Type','text/html')]) body ='<h1>Hello,%s!</h1>' % (environ['PATH_INFO'][1:] or 'web') return [body.encode('utf-8')]
Flask框架
!/usr/bin/env python3-*- coding: utf-8 -*-from flask import flaskfrom flask import requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): return '<h1>Home</h1>'@app.route('/signin', methods=['GET'])def signin_form(): return '''<form action="/signin" method="post"> <p><input name="username"></p> <p><input name="password" type="password"></p> <p><button type="submit">Sign In</button></p> </form>'''@app.route('/signin', methods=['POST'])def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': return '<h3>Hello, admin!</h3>' return '<h3>Bad username or password.</h3>'if __name__ == '__main__': app.run()
异步IO—消息循环,主线程不断地重复“读取消息-处理消息”
loop=get_event_loop() while True: event=loop.get_event() process_event(event)
asyncio模块-内置对异步IO的支持
改进方法——async/await(py3.5版本开始使用的新语法)
aiohttp—基于asyncio实现的HTTP框架
详细请参考:Python教程
- 【笔记】Python3.X笔记
- Python3.X学习笔记
- Python3.x学习笔记(一)
- python3.x 学习笔记 2
- Python3.X之基础笔记
- Python3.X之模块笔记
- python3.x 笔记(1)
- python3.x文件IO学习笔记
- Python3.X之面向对象编程笔记
- Python3.X之函数式编程笔记
- Python3.X之高级特性笔记
- 简明Python教程笔记一 python3.x
- 简明Python教程笔记二 python3.x
- 简明Python教程笔记三 python3.x
- 简明Python教程笔记四 python3.x
- 简明Python教程笔记五 python3.x
- python3笔记
- python3笔记
- 2015 3-1 图像旋转
- 世纪秒:2000年1月1日0时0分0秒到现在的秒数
- 17 - 04 - 17 Web安全(13)
- 练习3.33
- 数据结构之判断一棵树是否为完全二叉树
- 【笔记】Python3.X笔记
- python中文分词库结巴使用示例
- LeetCode 475. Heaters
- 【bzoj1143】[CTSC2008]祭祀river
- 持续集成篇之SVN版本管理系统的安装(CentOS+Subversion+Apache+Jsvnadmin)
- 数据结构与算法分析笔记与总结(java实现)--链表7:含环链表找环入口结点问题
- Android应用出错 error: Error retrieving parent for item: No resource found that matches the
- spring mvc入门
- C++ Qt Game Tutorial 1 - Drawing the Player (rectangle)