Python - 读书笔记《Python编程:从入门到实践》
Tag:看《Python编程:从入门到实践》读书笔记
基础知识:
字符串str
改变大小写(临时):title首字母大写,upper全大写,lower全小写
删除空白(临时):rstrip删除最右边空白,lstrip删除最左边,strip删除左右两边
列表list [ ]
添加元素:append添加在尾部,insert添加在指定位置
删除元素:del删除指定位置,pop删除指定位置并返回删除元素,remove删除同名元素
排列元素:sort(永久)排序,sorted(临时)排序,reverse(永久)反转,len计算长度
生成一系列数字:range,range+list方法创建数值列表
列表解析:examples=[value ** 2 for value in range(1,11)]
对数值列表执行简单的统计计算:min求最小,max求最大,sum求总和
切片:使用/处理列表中的部分元素,for循环遍历列表,[ :]复制列表(注:列表名不能直接相等)
元组 ()
注:元组里面元素不可变,只能通过重新赋值来修改元组
判断语句if
==是否相等,!=是否不等,and条件都要满足,or条件至少满足一个,in是否包含在列表中,not in反之
注:条件测试(if语句紧跟的表达式),又称为布尔表达式。
if+列表名:判断列表是否为空
字典dict { }
注:python不关心键值对的存储顺序,只跟踪键和值(key :value)之间的关联关系
访问元素:字典名[key]
添加元素:直接访问key赋值
删除元素:del 字典名[key]永久删除
遍历元素:for key, value in 字典名.items() 遍历字典中所有的键值对
for key in 字典名.keys() 遍历字典中所有的键
sorted(字典名.keys()) 临时排序字典中所有的键
for value in 字典名.values() 遍历字典中所有的值
嵌套:列表中嵌套字典(字典列表),字典中嵌套列表,字典中嵌套字典
集合set
注:集合类似列表,集合会自动去重
获取用户输入input
注:input方法返回的是字符串,int方法将字符串转化为数值,%求模运算符两数相除返回余数
循环while
注:while循环常接一个标志/标志位,对循环进行开关
break退出循环,continue跳过当前循环继续后面循环
函数
位置实参:def describe_pet(animal_type, pet_name) describe_pet('cat', 'harry')
关键字实参(调用函数时指定实参对应形参):describe_pet(pet_name='harry', animal_type='cat')
形参指定默认值(放在所有形参后):def describe_pet(pet_name, animal_type='cat')
返回值:return可以返回任意类型
传递列表:参数类型为列表,防止函数修改列表可传入该列表的切片
传递任意数量实参:def make_pizza(size, *toppings),其中*号让py创建一个空元组,放在最后
传递任意数量关键字实参:def build_profile(first, last, **user_info),其**号让py创建一个空字典
函数存储在模块中
导入整个模块:import module
导入整个模块中所有函数:from module import *
注:以上两种在函数调用上有区别(最好还是用 模块名 . 函数名)
导入指定函数:from module import func1, func2
as给函数取别名:form module import func as fn
as给模块取别名:import module as mn
类
实例化类:__init__方法会在创建新实例时自动运行,做初始化操作
继承:父类放在括号里面,子类与父类通过super().__init__()关联起来
类存储在模块中
导入单个类:from module import class 一个模块中可以存储多个类
导入多个类:from module import class1, class2
导入整个模块:import module
导入整个模块中所有类:from module import *
文件IO
打开文件:with open(文件) as file_objecto,with关键字让py自动判断关闭文件的时机
打开文件模式:r只读(不填默认)
w只写(文件不存在自动创建,存在则清空)
r+读写
a追加(文件不存在自动创建,存在则追加)
读取整个文件:file_object.read()
逐行读取文件:lines列表=file_object.readlines()
写入文件:write方法(该方法不会在写入的文本末尾添加换行符)
异常
处理异常:try-except代码块(try代码没问题就跳过except代码)
try-except-else代码块(try可能导致异常代码,except异常处理代码,else正常处理代码)
存储数据(json模块)
存储:json.dump()
读取:json.load()
测试代码
工具:unittest模块 + 创建一个类继承unittest.TestCase + 测试方法
注:测试方法必须以test打头,这样py才会自动执行
单元测试和测试用例(一组单元测试):测试函数,测试类
使用断言返回值:等于/不等于预期值,返回值为True/False,返回值在/不在列表中
对类中方法进行测试:在setUp方法中创建实例方便在整个测试类中使用该类
项目3:Django(MVT模式 Model/View/Template)
测试工具:curl/postman
常用终端命令:
创建Django程序:django-admin startproject sitename (在当前目录下创建一个Django程序)
启动服务:python manage.py runserver ip:port (默认ip和端口为http://127.0.0.1:8000/)
新建app:python manage.py startapp appname
同步数据库命令:python manage.py syncdb(Django 1.7及以上版本需要用以下的命令)
显示并记录所有数据的改动:python manage.py makemigrations
将改动更新到数据库:python manage.py migrate
创建超级管理员:python manage.py createsuperuser
数据库命令行:python manage.py dbshell
查看命令列表:python manage.py
Django包含组件:路由Route,视图View,模板Template,模型Model
路由Route:根据用户请求地址查找视图
视图View:接收、处理、返回(响应请求)
模板Template:编写html、css、js代码(编写模板语言代码)
模型Model:用于和关系型数据库交互
Django路由系统:
URL配置:本质是URL模式以及要为该URL模式调用的视图函数之间的映射表
参数:正则表达式,view函数,参数,别名
命名组(Named groups)
二级路由(Including)
添加额外的参数
别名的使用
指定view的默认参数
Django视图函数:
http请求中产生两个核心对象:HttpRequest请求对象,HttpResponse响应对象
HttpRequest:有请求时,Django会自动创建一个包含原数据的请求对象,然后视图函数将其作为第一参数
HttpResponse:每个视图函数必须返回一个响应对象,需要自己创建
rander方法:结合模板+上下文,返回一个字典HttpResponse在渲染文本对象
Django模板:
模板的执行:读取模板,将Model中获取的数据插入模板中,最后返回给用户
模板语言
自定义标签
Django模型:
抽象层(model)用来构建和管理Web应用程序的数据
创建表,操作表
MiddleWare中间件:
中间件其实是一个类,在请求到来和结束时根据规则在合适的时机执行中间件中相应的方法
项目模块settings:里面有个MIDDLEWARE变量,其中每个元素都是一个中间件
自定义中间件类:创建中间件类、注册中间件
Form:
Django中的From一般有2中功能:输入html,验证用户输入
Auth认证系统:
auth模块:Django提供的标准权限管理系统
功能:提供用户身份认证,用户组管理,并且可以和admin模块配合使用
Csrf跨站请求伪造:
csrf中间件:为用户实现防止跨站请求伪造的功能(分为全局和局部)
分页:
Django内置分页,可自定义分页
分页实例:创建处理分页数据的类;根据分页数据获取数据;输出分页HTML(即 上一页 下一页)
Cookie:
cookies保存在客户端电脑上:获取Cookies,设置Cookies
Session:
Django默认支持Session,内部提供5种类型的Session供开发者使用
5种类型:数据库,缓存,文件,缓存+数据库,加密cookies
缓存:
动态网站,解决耗时方式是使用缓存将某个views返回值保存在缓存中,一定时间有人访问就到缓存拿
6种缓存方式:开发调试,内存,文件,数据库,Memcache缓存(类似数据库操作)
序列化:
主要应用:是将数据库种检索的数据返回给客户端用户
信号:
信号调度:用于解耦,某些动作发生时,信号允许特定发送者提醒接受者
内置信号:Django内置的信号,仅需注册指定信号,当程序执行相应操作时,自动触发注册函数
自定义信号:定义并注册信号,触发信号
Admin后台管理页面:
Django提供一个后台管理页面:提供完善的html和css,使得创建完数据库表之后,可对数据进行增删改查
使用Django admin步骤:创建后台管理员,配置url,注册和配置Django admin后台管理页面
//