一.基础知识 “__”前缀:私有属性.方法,在__dict__中存储时被改写为“_类名__”前缀 “_”前缀:是约定俗成的保护属性.方法,不过编译器不会对之采取任何处理 二.class特殊方法介绍 在第9章的双元素基础上,我们扩展为任意元素长度的向量,并探讨了相关方法的使用: __getattr__(self, name): result = obj.name 会调用builtin函数getattr(obj,'name')查找对应属性,如果没有name属性则调用obj.__getattr__('…
一.Python风格 以一个二元素向量对象为例 import math from array import array class Vector2d: typecode = 'd' def __init__(self, x, y): self.x = float(x) self.y = float(y) def __iter__(self): # 使得Vector2d变成可迭代对象 # __iter__方法的实现使得本类可以被转化为tuple在内的其他可迭代类 return (i for i i…
由于1~4章内容零散且基础,所以统计一下涉及到的内容,记录一下,方便查阅(第一张图右键新页面打开即可看到清晰大图)…
运算符重载基础 不能重载内置类型的运算符 不能新建运算符,只能重载现有的 某些运算符不能重载-------is,and,or和not(不过位运算符&,|和~可以) 一元运算符…
在前面第十章以及第一章的时候介绍了Vector对象的运算符重载.第十三章专门介绍运算符重载.这里我们看几个之前没讲过的运算符__neg__,__pos__,__invert__ class Vector(object):     def __init__(self,x):         self.x=x     def __neg__(self):         return "Vector(%d)" % (-self.x)     def __str__(self):      …
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } 有些事情让我不安,比如运算符重载.我决定不支持运算符重载,这完全是个人选择,因为我见过太多 C++ 程序员滥用它. --James Gosling Java 之父 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } 运算符重载的作用是让用户定义的对象使用中缀运算符(如 + 和 |)或一元运算…
在python中,所有集合都可以迭代,在python语言内部,迭代器用于支持 for循环 构建和扩展集合类型 逐行遍历文本文件 列表推导,字典推导和集合推导 元组拆包 调用函数时,使用*拆包实参 本章涵盖的话题 语言内部使用 iter(...) 内置函数处理可迭代对象的方式如何使用 Python 实现经典的迭代器模式详细说明生成器函数的工作原理如何使用生成器函数或生成器表达式代替经典的迭代器如何使用标准库中通用的生成器函数如何使用 yield from 语句合并生成器案例分析:在一个数据库转换工…
Function Decorators and Closures 装饰器是用于增强函数的行为,理解它,就必须先理解闭包. Python3引入关键字nonlocal,如果要理解闭包,就必须了解它的所有方面,包括nonlocal的使用. 闭包在装饰器中有用,另一个用处是回调方式的异步编程和函数方式编程的风格的基础. 首先是decorator的基本知识. 如何计算decorator syntax 判断变量是否是local closure的存在和工作原理 nonlocal能解决什么? 通州 decora…
dict and set 字典数据活跃在所有的python程序背后,即使你的源码里并没有直接使用它. 和dict有关的内置函数在模块builtins的__dict__内. >>> __builtins__ <module 'builtins' (built-in)> >>> __builtins__.__dict__ dict之所以在python中起到至关重要的作用,是因为Hash table. 本章内容: 常见方法 如何处理找不到的key dict变种 s…
第二部分 Data Structure Chapter2 An Array of Sequences Chapter3 Dictionaries and Sets Chapter4 Text versus Bytes An Array of Sequences 本章讨所有的序列包括list,也讨论Python3特有的str和bytes. 也涉及,list, tuples, arrays, queues. 概览内建的序列 分类 Container swquences: 容器类型数据 list, t…
列表推导是构建列表(list)的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.如果你的代码里并不经常使用它们,那么很可能你错过了许多写出可读性更好且更高效的代码的机会. 2.2.1 列表推导和可读性 把一个字符串变成 Unicode 码位的列表 第一种方法 symbols = '$¢£¥€¤' codes = [] # ord() ascii字符串 转换成对应的数字 for symbol in symbols: codes.append(ord(symbol)) print(code…
在 Python 中,数据的属性和处理数据的方法统称属性(attribute).其实,方法只是可调用的属性.除了这二者之外,我们还可以创建特性(property),在不改变类接口的前提下,使用存取方法(即读值方法和设值方法)修改数据属性 除了特性,Python 还提供了丰富的 API,用于控制属性的访问权限,以及实现动态属性.使用点号访问属性时(如 obj.attr),Python 解释器会调用特殊的方法(如__getattr__ 和 __setattr__)计算属性 使用 __new__ 方法…
从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数.可是,在协程中,yield 通常出现在表达式的右边(例如,datum = yield),可以产出值,也可以不产出——如果 yield 关键字后面没有表达式,那么生成器产出 None.协程可能会从调用方接收数据,不过调用方把数据提供给协程使用的是 .send(datum) 方法,而不是next(...) 函数.通常,调用方会把值推送给协程.yield 关键字甚至还可以不接收或传出数据.不管数据如何流动,yield 都是一种流…
with 语句和上下文管理器for.while 和 try 语句的 else 子句 with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并且负责清理上下文.这么做能避免错误并减少样板代码,因此 API 更安全,而且更易于使用.除了自动关闭文件之外,with 块还有很多用途 else 子句不仅能在 if 语句中使用,还能在 for.while 和 try 语句中使用 for 仅当 for 循环运行完毕时(即 for 循环没有被 break 语句中止)才运行 else 块.while 仅…
目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结: 提示:我们上一篇文章介绍了什么是Moco框架,以及Moco框架的启动方式.本篇文章主要说说如何使用Moco框架来辅助我们进行测试. 当需要调用接口来编写测试用例的时候,此时该接口并没有被实现,这个时候我们就可以用Moco框架来模拟一个接口出来. 使用Moco模拟接口以下功能: 拦截服务:http…
github地址:https://github.com/cheesezh/python_design_patterns 题目1 用程序模拟一个画小人的过程,要求小人要有头,身子,左手,右手,左脚,右脚. 基础代码 class PersonDrawer(): def draw(self): print("画头") print("画身子") print("画左手") print("画右手") print("画左脚&quo…
子类化内置类型的缺点 多重集成和方法解析顺序 tkinter…
作者:熊猫烧香 链接:www.pythonheidong.com/blog/article/26/ 来源:python黑洞网 目标读者 本书的目标读者是那些正在使用 Python,又想熟悉 Python 3 的程序员.如果你懂 Python 2,但是想迁移到 Python 3.4 或者更新的版本,也没问题.在写这本书的时候,大多数专业 Python 程序员用的还是 Python 2,因此如果书中出现来自 Python 3 的特性,读者可能会感到陌生,我也会特别地做出解释.然而,本书的主要目的是为…
第1章 python数据模型 python的写法是由背后的魔法方法实现的,比如obj[key],解释器实际调用的是obj.__getitem__(key) 作者把魔法方法叫做双下方法,因为有两个下划线 collections.namedtuple可以用来创建只有少数属性但没有方法的对象,比如 beer_card = Card('7', 'diamonds') random.choice和random.sample不一样的地方在于,sample是返回序列,choice是返回元素,当使用sample…
鸭子类型协议不完全总结序列:len,getitem切片:getitemv[0]分量的取值和写值:getitem和setitemv.x属性的取值和写值:getattr和setattr迭代:1)iter,2)getitem上下文管理器:enter,exit+=:1)iadd,2)add可散列:hash,eqin测试:1)contains,2)iter,3)getitem 第一章,python数据模型__repr__得到对象的字符串表现形式if obj,实际执行的是bool(obj),python解释…
第1-3章 这个文档是记录我学习python时一些学习笔记以及一些想法也可以称作复习笔记 第一章:起步这一章主要是从第一个"hello world"程序到python环境的搭建与配置,因为我在Mac上用的一个叫Jupiter Notebook的网页端界面,所以就省去了这个步骤,直接进行后面的练习了,当然后面到小项目的时候也许还是需要熟练的在Windows.MacOS.Linux三个不同环境下搭建环境的. 第二章:变量和简单数据类型这一章主要涵盖了:变量.字符串.数字.注释.python…
Object References, Mutability, and Recycling 本章章节: Variables Are Not Boxes identity , Equality ,  Aliases Copies are shallow by default Function Parameters as references del and Garbage Collection Weak References Tricks Python Plays with Immutable Va…
上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一般形式 2)示例应用:基础应用.元组赋值.扩展序列赋值.嵌套for循环 3.编写循环的技巧 1)range 2)zip 3)enumerate 以下为本章重点内容的详细说明 1.while循环 1)一般形式:以下是完整形式,注意分段及缩进 while test: statements else: s…
流畅的Python 致Marta,用我全心全意的爱 第一部分 序幕 第一章 Python数据模型 特殊方法 定义: Python解释器碰到特殊句法时,使用特殊方法激活对象的基本操作,例如python语句len(x) 调用了x.__ len __的方法.这些特殊方法支持以下的语言构架: 迭代 集合类 属性访问 运算符重载 函数和方法的调用 对象的创建和销毁 字符串表示形式和格式化 管理上下文(with块) 命名规则: __ getitem __ (左右两个双下划线,故称为dunder method…
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑运算符可以连续使用 4.Python运算符优先级 说明:变量的赋值与计算都离不开表达式,表达式的运算依赖于变量.常量和运算符.那么我们先说一说什么是表达式. 1.表达式介绍 Python表达式是变量.常量.运算符.方法调用的序列,它执行指定的计算并返回某个确定的值. 表达式不会对程序产生实质性的影响…