首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

流畅Python笔记.1

可变序列 list,生成器表达式可以用来创建任何类型序列,它本身没有容器结构,存粹实现了迭代功能,这是它实现内在....和列表表达式区别是方括号变成圆括号 只用推导式去生成一个新列表.超过两行推导式就考虑重新写吧.有点复杂了.其内部使用变量作用域Σ(っ °Д °;)っ就是其本身,所以看起来是相对封闭环境,不会和外界...元组拆包 这个可以应用带任何可以迭代对象上面去。唯一硬性要求是,被可迭代对象中元素数量必须根接受这些元素元组空档数是一致。其实可迭代元素拆包这个说法也流行起来了。...最好辨认方法就是平行赋值,也就是一个可迭代对象里元素,一并赋值到对应变量组成元组中。...后者可以是由数个字符串组成可迭代对象,或者是由空格分隔开字段名组成字符串。

57520

系统补白:流畅python(1)

流畅python 对于发展迅速组织来说,python可以极大地提高生产力。...初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂程序。 ? 那Python适合开发哪些类型应用呢?...那些大公司代码不愿意开放更重要原因是代码写得太烂了,一旦开源,就没人敢用他们产品了。 瑕不掩瑜。python确实是简洁,可读性高。适用于大多数场景语言。...总的来说,Python哲学就是简单优雅,尽量写容易看明白代码,尽量写少代码。如果一个资深程序员向你炫耀他写晦涩难懂、动不动就几万行代码,你可以尽情地嘲笑他。...此外pip是python第三方包管理工具。 数据类型 包括: 布尔型(True/False) 整型 浮点型(小数或科学计数法) 字符串 变量与命名 python是强类型语言。

73230

流畅 Python - 3. 文本与

对于字符串,我们接触得挺多。而编码问题,也不时令人头疼。...由于一开始接触就是 Python3,所以一些在 Python2 上编码上坑我没遇到,甚至在 Python3 上都很少遇到编码问题,因为 Python3 默认编码是 utf-8,而之前又从 Windows...使用下标获取字节值时,返回是整数。这个是没想到。很多适用于 str 对象方法也适用于 bytes 对象。 struct 模块提供了一些函数可把字节序列与其他不同类型互相转换。...除了 utf-8 编码,Python 还内置了许多其他编码器。不同编码器编码相同字符,最终字节大小可能会不同。...NFC(Normalization Form C)使用最少码位构成等价字符串,而 NFD 把组合字符分解成基字符和单独组合字符。

67410

流畅Python》学习笔记之字典

python 词汇表(https://docs.python.org/3/glossary.html#term-hashable)中,关于可散列类型定义是这样:如果一个对象是可散列,那么在这个对象生命周期中...my_dict.keys() 在 Python3 中返回值是一个 "视图","视图"就像是一个集合,而且和字典一样速度很快。但在 Python2中,my_dict.keys() 返回是一个列表。...所以 k in my_dict.keys() 操作在 python3中速度很快,但在 python2 中,处理效率并不高。如果要自定义一个映射类型,合适策略是继承类。...因为所有表元大小一致,所以可以通过偏移量来读取某个表元。python 会设法保证大概有1/3 表元是空,所以在快要达到这个阈值时候,原有的散列表会被复制到一个更大空间。...5、往字典里添加新键可能会改变已有键顺序 无论何时向字典中添加新键,Python 解释器都可能做出为字典扩容决定。

1.9K100

评价最高Python书籍《流畅Python

Python是一门既容易上手又强大编程语言。”这句话本身并无大碍,但需要注意是,正因为它既好学又好用,所以很多Python程序员只用到了其强大功能一小部分。...今天跟大家分享就是一本Python开发者们翘首期盼进阶图书,其中文版在豆瓣上评分为9.4,它是《流畅Python》,这可能是目前评价最高一本python书籍了! ?...,告诉你Python中不亲自动手实践就无法理解语言陷阱成因和解决之道,教你写出风格地道Python代码。...【主要内容】 本书致力于帮助Python开发人员挖掘这门语言及相关程序库优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维护,并且具有地道Python风格代码。...本书尤其深入探讨了Python语言高级用法,涵盖数据结构、Python风格对象、并行与并发,以及元编程等不同方面。 本书适合初中高级Python软件开发人员阅读参考。 ?

1.3K30

流畅Python》第十六章学习笔记

协程四个状态 使用inspect.getgeneratirstat()获取协程状态 等待开始执行 GEN_CREATED 解释器正在执行 GEN_RUNNING 在yield表达式处暂停 GEN_SUPENDED...next(c) # 预激 print(c.send(10)) print(c.send(20)) print(c.send(30)) print(c.send(5)) 协程终止与异常处理...10) d.send(11) d.throw(DemoException) print('1234') d.close() yield from Yield from 主要功能是打开双向通道...,把最外层调用方与最内层子生成器连接起来,这样两者可以直接发送和产出值,还可以直接传出异常,而不用在位于中间协程中添加大量处理异常样板代码。...委派生成器 包含yield from 表达式生成器函数 子生成器 从yield from 表达式中部分获取生成器 调用方 指代委派生成器客户端代码 例子 from

24620

流畅Python》第五章学习笔记

Python中,函数是一等对象。 一等对象 在运行时创建 能赋值给变量或数据结构中元素 能作为参数传给函数 能作为函数返回结果 第二点和第三点在实际编写代码时候经常用到!...常见高阶函数: map filter reduce 函数式语言通常会提供这三个高阶函数 在Python中可以使用列表推导式来替代实现 def fact(n): return 1 if n <...可调用对象 使用callable()方法查看对象是否是可调用对象 只要实现__call__方法,任何Python对象都可以调用 class A(): def __init__(self, a,...注解最大作用是:为IDE和lint程序静态检查功能提供额外类型信息 itemgetter 返回一个根据索引提取元素函数 from operator import itemgetter class...,我们把它其中一个入参固定为3,这样我们只需要传入一个参数就可以计算了 不指定冻结形参的话,默认是冻结左侧形参,该函数中a

38720

流畅Python》第十四章学习笔记

iter函数作用 任何Python序列都可迭代原因是,它们都实现了__getitem__方法。...检查对象能否迭代 调用iter(x)函数,如果不可迭代,再处理TypeError异常 可迭代对象与迭代器 Python从可迭代对象中获取迭代器 迭代器可以迭代,但是可迭代对象不是迭代器 s = 'ABC...Python语言会处理for循环和其他迭代器(列表推导、元组拆包等)上下文中StopIteration 可迭代对象 使用iter内置函数可以获取迭代器对象。...Python迭代器还实现了__iter__方法,因此迭代器也可以迭代 ⚠️可迭代对象一定不能是自身迭代器。...也就是 可迭代对象必须实现__iter__方法,但不能实现__next__方法 迭代器模式可以用来 访问一个聚合对象内容而无需暴露它内部表示 支持对聚合对象多种遍历 为遍历不同聚合结构提供一个统一接口

56620

流畅Python》第十三章学习笔记

运算符重载作用是让用户定义对象使用中缀运算符或一元运算符 中缀运算符 是一个通用算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数中间(例:3 + 4),中缀表达式是人们常用算术表示方法...Python对运算符重载限制 不能重载内置类型运算符 不能新建运算符,只能重载现有的 某些运算符不能重载:is、and、or和not 一元运算符处理方式 支持一元运算符,只需要实现相应特殊方法。...不能修改self,要创建并返回合适类型新实例。...other 比较运算符 正向和反向调用使用是同一系列方法 对==和!...=来说,如果反向调用失败,python会比较对象ID,而不抛出TypeError ? 比较运算符 增量赋值运算符 增量赋值运算符不会修改不可变目标,而是新建实例,然后重新绑定

48610

流畅Python》第十一章学习笔记

猴子补丁 Python是动态语言,所以可以在运行时进行修正 class A: def f(self): pass def f(a): return 'Hello World...,转而关注对象有没有实现所需方法、签名和语义。...在框架之外,鸭子类型通常比类型检查更简单,也更灵活 抽象基类 collections.abc中有很多有用抽象类 Python抽象基类可以使用register类方法在终端用户代码中把某个类「声明」为一个抽象基类...让解释器把调用分派给正确方法,而不是if/elif/else块硬编码分派逻辑 抽象基类是用于封装框架引入一般性概念和抽象。...基本上不需要自己编写新抽象基类,只要正确使用现有的抽象基类就能获得99.9%好处,而不用冒着设计不当导致巨大风险。 ?

44610

流畅Python》第十五章学习笔记

,或者在另一个过程前后只想操作。...with语句目的是简化try/finally模式 这种模式用于保证一段代码运行完毕后执行某项操作,即使那段代码由于异常、return或sys.exit()调试而中止,也会执行指定操作 with语句开始时候会在上下文管理对象上调用...__enter__方法 with语句结束时候户在上下文管理对象上调用exit方法 exit三个参数 def __exit__(self, exc_type, exc_value, traceback...不用编写完整__enter__与__exit__函数,只需要实现有一个yield语句生成器 yield把函数分为了两部分, 上半部分相当于enter中内容 下半部分相当于exit中内容 class...退出") if __name__ == '__main__': with B() as b: print('test1') assert 0 上述两段代码实现效果是一样

26410

流畅 Python 第二版(GPT 重译)(九)

这就是迭代器作用。本章展示了迭代器设计模式是如何内置到 Python 语言中,因此您永远不需要手动编写它。 Python每个标准集合都是可迭代。...在 Python 中理解经典协程很令人困惑,因为它们实际上是以不同方式使用生成器。因此,让我们退一步考虑 Python 中另一个可以以两种方式使用特性。...随着 Python 3.5 中本地协程出现,Python 核心开发人员正在逐渐淘汰asyncio中对经典协程支持。但底层机制非常相似。...⁷ 在 Python 2 中,有一个名为coerce()内置函数,但在 Python 3 中已经消失了。这被认为是不必要,因为数值强制转换规则在算术运算符方法中是隐含。...⁸ 流畅 Python代码库中17-it-generator/目录包含了文档测试和一个名为aritprog_runner.py脚本,该脚本针对aritprog.py*脚本所有变体运行测试。

9410

流畅Python》第十七章学习笔记

这两个类实现接口能分别在不同线程或者进程中执行可调用对象。 这两个类在内部维护着一个工作线程或进程池,以及要执行任务队列。...,而确定某件事会发生唯一方式是执行时间已经排定 future封装待完成操作,可以放入队列,完成状态可以查询,得到结果(或抛出异常)后可以获取结果(或异常)。...阻塞型I/O和GIL GIL几乎对I/O密集型处理无害 Cpython解释器本身就不是线程安全,因此有全局解释器锁「GIL」,一次只运行使用一个线程执行Python字节码。...因此,一个Python进程通常不能同时使用多个CPU核心。...标准库中所有执行阻塞性I/O操作函数,在等待操作系统返回结果时都会释放GIL 使用ProcessPoolExecutor进行并行计算 ProcessPoolExecutor类把工作分配给多个Python

32010

流畅 Python 第二版(GPT 重译)(七)

本章新内容 本章经过大幅编辑,比第一版《流畅 Python》中对应第十一章长约 24%。虽然有些部分和许多段落是相同,但也有很多新内容。...《流畅 Python》第一版中有一节鼓励使用numbers ABCs 进行鹅式类型化。...Python 探究序列 Python 数据模型哲学是尽可能与基本动态协议合作。在处理序列时,Python 会尽最大努力与即使是最简单实现一起工作。...在流畅 Python审查过程中,Alex 在一封电子邮件中写道: ABCs 旨在封装由框架引入非常一般概念、抽象概念——诸如“一个序列”和“一个确切数字”。...isinstance(c, numbers.Complex) True >>> isinstance(c64, numbers.Complex) True 在第一版流畅 Python中,我推荐使用numbers

6610
领券