Python 3程序开发指南(第2版 修订版)笔记

Python 3程序开发指南(第2版 修订版)

目录

过程型程序设计快速入门

  1. for in
  2. try except as

数据类型

  1. sys.float_info.epsilon
  2. seq[start:end]实际上代表[start, end)区间,s[:]相当于s[0:len(s)]
    1. 不一致:当使用负数step时,start默认为-1:s[::-2]
  3. strTemplate.format(agr0, arg2, name1=value1,...)
    1. {0} {1} {2} ...
    2. {name1} {name2} ... //混用时编号参数在前面,命名参数放到后面
    3. 使用当前作用域范围内的局部变量? **locals() //locals()返回一个字典,**将其拆分

组合类型

  1. 序列:bytearray、bytes、list、str、tuple

    1. collections.namedtuple
    2. 列表拆分:first, *rest = [1,2,3,4]
    3. 列表理解:[expr for i in L]
  2. 集合:set
    1. 集合理解:{expr for i in s}
  3. 映射:3.0 dict、collections.defaultdict,3.1 collections.OrderedDict
    1. setdefault:防止d[k]+=1这样的语法第一次调用时抛出KeyError

控制结构与函数

模块

OOP

文件处理

  1. bytes.fromhex ?
  2. f.seekable()

高级程序设计技术

  1. 生成器:实现者使用yield惰性返回,调用者for in获取之

    1. 重置当前值:generator.send(val), val作为yield表达式的结果接受
  2. 动态导入模块:最原始的方法
    1. code = open(filepath, "r", encoding="utf8").read()
    2. module = type(sys)(name)
    3. sys.modules[name] = module
    4. exec(code, module.__dict__)
  3. 装饰器:高阶函数,original_func --> wrapped_func(这里一个主要的理解障碍在于*args, **kwargs参数的语法)
    1. 函数注释:__annotations__
  4. Functor:__call__
  5. 上下文管理器:with expr as var: suite
    1. expr返回的结果必须实现__enter__ __exit__,如open()返回的文件对象
  6. 描述符*:__get__ __set__ __delete__
    1. __slots__ = ()
  7. 类修饰器:class --> class‘
    1. nonlocal
  8. ABC(抽象基类)
  9. 元类(?)

FP

  1. functools.partial
  2. @coroutine:为协程调用内置的next(),使其执行到第一个yield处并等待
    1. 构成流水线*

调试、测试与Profiling

  1. p366 Python 3的优点之一是区分str与bytes?
  2. Python 3.0异常链的支持:raise NewException(...) from err

进程与线程

网络

数据库

正则表达式

  1. 负前瞻:(?!e)
  2. m.span(g):返回组g在文本中匹配的起始接受索引位置(start,end)

分析简介

PyParsing

  1. 要素:Literal()、Supress()、Keyword()(必须全词匹配)

    1. Word("abc")匹配abacus?
    2. CharsNotIn() SkipTo() Regex()
    3. Forward() 空的要素?
  2. 量化:Optional()、ZeroOrMore()、OneOrMore()、Group()、Combine()
  3. 处理BNF的惯用法:
    1. 不要写成item | Empty(),而是Optional(item)
    2. 变量列表:var_list = variable + ZeroOrMore(Supress(",")+variable)
  4. 设置动作:.setParseAction(lambda tokens: ...)
  5. 分析一阶逻辑*:
    1. 例:(forall x: exists y: true) -> true & ~true -> true
    2. ParseElement.enablePackrat()

PLY

  1. t_TOKENNAME p_bnf_rule ...

GUI

时间: 2024-10-18 10:56:01

Python 3程序开发指南(第2版 修订版)笔记的相关文章

python 数据类型--《Python 3程序开发指南》笔记

参考:<Python 3程序开发指南> 整数转换函数: bin(i) 返回整数i的二进制表示(字符串) hex(i) 返回i的十六进制表示(字符串) int(x) 将x转换为整数,失败产生ValueError异常,x的数据类型不知道到整数的转换产生TypeError异常,x为浮点数则截取整数部分 int(x,base) 将用base进制表示的x转换成十进制,例如int('74',8)返回60,int('A4',16)返回164 oct(i) 返回i的八进制表示,例如oct(10)=='012'

Vista/Win7 UAC兼容程序开发指南

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

4: 模块化应用程序开发(纯汉语版)

模块化应用程序是指由松耦合的功能单元(模块)集成在一起的大型应用.一个客户端模块封装了程序的一部分功能和相关问题.模块可以使一些相关组件的集合,例如程序功能,包括界面和业务逻辑,或是程序基础架构,例如日志或是授权用户等程序级别的服务.模块之间互相独立又可以松耦合通信.使用模块化应用程序设计是开发测试,部署和维护你的应用程序更加简单. 举个例子,一个私人银行程序.用户可以访问多种功能,例如转账,支付账单,并更新个人信息.然而,场景背后,每个功能都封装到一个单独的模块.这些模块互相交换,或是和后台系

JavaScript权威指南(第6版)(中文版)笔记

? JavaScript权威指南(第6版)(中文版)笔记 ? ? ?

javascript权威指南第6版学习笔记

javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console.log(x==y);console.log(x==.1);console.log(y==.1); 控制台输出结果: 3.1.5 var now = new Date();console.log(now); 3.2 文本 Javascript没有字符型,只有字符串. 16位怎么理解 3.10 变量作

微信应用号小程序开发(金华火爆版)

想必大家都关心微信应用号的最终形态到底是什么样子?怎样将一个「服务号」改造成为「小程序」? 金华腾云科技分享:开发过程吧. OK,为了让大家尽快看到这份教程!今晚开始更新,希望明天一早就能发布第一篇教程!记录开始!看看几天能完成变身吧! 序言开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开

freeMarker(八)——程序开发指南之配置(Configuration)

1.基本内容 配置(configuration)就是 freemarker.template.Configuration 对象, 它存储了常用(全局,应用程序级)的设置,定义了想要在所有模板中可用的变量(称为共享变量). 而且,它会处理 Template 实例的新建和缓存. 应用程序典型的用法是使用一个独立的共享 Configuration 实例.更精确来说, 典型的做法是每一个独立开发的组件(比如项目,模块等)都有一个 Configuration 实例,它在内部使用FreeMarker, 每一

《Python基础教程》(第2版修订版)中要注意的地方

想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Python基础教程>做教材的时候,发现作者虽然提及了2.X与3.X的版本有区别,但是有些地方没有点明,甚至会让用3.X版本的朋友引起误导,下面我就随着使用过程,更新一下遇到的一些问题,希望让初学者们不要感到困扰. 首先说一下教材的信息,因为版本很重要 <Python基础教程(第2版 修订版)> 

17/精度Python程序开发指南第一章

要素#1:数据类型 1)Python使用int类型表示整数,使用str类型表示字符串(Unicode字符序列) Python所能表示的整数大小只受限于机器内存,而非固定数理的字节数,字符串可以用双引号或单引号封装--只要符号是对称的,eg. 1 -973 2 23156 3 0 4 "Python code" 5 'Python code' 6 "positvely α β γ" 变量举例 由于Python使用的是Unicode编码,所以字符串的符号不受限于ACSI