【Python】Python3.X笔记

简介: 【Python】Python3.X笔记

基于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+1
g=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 sys
list=[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 Image
im=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.height
s=Screen()
s.width=1024
s.height=768
print(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
@unique
class Weekday(Enum):
    Sun=0
    Mon=1py
    Tue=2
    Wed=3
    Thu=4
    Fri=5
    Sat=6
day1=Weekday.Mon
print('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 json
d=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 flask
from flask import request
app = 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教程



相关文章
|
1月前
|
Python
【python】】Python 的 queue 模块使用笔记
【python】】Python 的 queue 模块使用笔记
25 0
|
1月前
|
Python
Python笔记9 类
本文是作者的Python复习笔记第九篇,深入探讨了Python中的类和面向对象编程。文中详细解释了如何创建类、实例化对象、定义和使用类方法,以及类的继承、重写方法和嵌套类的使用。此外,还讨论了类模块的导入和导出,包括处理类之间的依赖关系。通过示例代码,文章展示了类在Python编程中的应用和重要性。
24 0
|
1月前
|
存储 Python
Python笔记8 函数
本文是作者的Python复习笔记第八篇,全面介绍了Python中的函数定义与使用,包括函数的参数传递(位置参数、关键字参数、默认参数、列表参数、任意数量参数和关键字参数)、函数的返回值以及如何创建和调用函数库(模块),并提供了丰富的示例代码。
24 0
|
1月前
|
Python
Python笔记7 输入与输出
本文是作者的Python复习笔记第七篇,主要介绍了Python中的输入与输出操作。文中详细解释了如何使用input()函数进行用户输入,包括添加多行字符串提示和字符串转列表输入的方法,以及如何使用print()函数进行格式化输出,提供了多种格式化字符串的示例。
28 0
|
1月前
|
存储 Python
Python笔记6 字典
本文是作者的Python复习笔记第六篇,专注于Python中的字典(dictionary)数据结构。文中详细解释了字典的创建和基本操作,包括访问、修改、添加和删除键值对的方法。此外,还介绍了如何遍历字典的键值对、键或值,并探讨了字典的高级用法,如字典列表、在字典中存储列表以及字典的嵌套使用。文中通过示例代码演示了字典在实际编程中的应用,帮助读者更好地理解和掌握字典这一重要的数据结构。
37 0
|
1月前
|
Python
Python笔记5 条件判断
本文是作者的Python复习笔记第五篇,主要介绍了Python中的条件判断语句。文中详细解释了if、if-else以及if-elif-else结构的用法,包括如何使用等于(==)和不等于(!=)操作符进行条件判断,如何通过and和or进行多条件判断,以及如何使用in和not in关键字检查列表中是否存在特定值。此外,文中还强调了在某些情况下省略else部分可以避免执行不合适的数据导致的命令执行,使代码更加清晰。
23 0
|
1月前
|
Python
Python笔记4 循环
本文是作者的Python复习笔记第四篇,专注于Python中的循环概念。文中详细解释了for循环和while循环的使用方法,包括如何通过循环遍历列表、使用range()函数和list()函数创建列表、列表解析法、while循环的基本使用、使用break和continue语句控制循环流程,以及如何为循环设置状态标志。此外,还提供了多个示例代码来演示循环在实际编程中的应用。
24 0
|
1月前
|
存储 索引 Python
Python笔记3 列表
本文是作者的Python复习笔记第三篇,专注于Python中的列表(List)操作。文中详细解释了列表的创建、元素访问、修改、添加和删除操作,并介绍了列表的排序、反转、长度获取、切片以及复制的方法。此外,还涉及了列表切片的技巧、列表常用函数(如获取最大值、最小值和总和),并对元组(Tuple)和集合(Set)进行了简要说明,包括它们的创建和基本操作。
13 0
|
1月前
|
C++ Python
Python笔记2 变量
本文是作者的Python复习笔记第二篇,主要介绍了Python中的变量概念和类型,包括字符串和数字的处理方法。文中通过示例代码讲解了字符串操作(如首字母大写、转大小写、合并、使用制表符和换行符、删除空白、类型转换等)以及数字的基本运算(加减乘除、乘方、求模等)。
26 0
|
1月前
|
Linux 测试技术 Python
Python笔记1 安装并配置Python
本文是作者关于Python复习笔记的系列文章第一篇,介绍了Python语言的特点、在不同操作系统上搭建Python环境的方法,包括下载编辑器和配置解释环境,并通过在编辑器中运行“Hello World!”程序来测试环境是否成功搭建。
31 0