自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 计算之魂 思考题2.2 Q2

对于上述数字,我们在建立二叉排序树时,先把第一个数字5放在根节点,然后扫描第二个数字2,由于它比根节点的数字5小,因此我们将它放在左子树中。接下来我们扫描第三个数字8,由于它比根节点的数字5大,因此我们将它放在右子树中。Q2. (二叉排序树)有这样一串数字,5,2,8,0,10,7,18,20,30,12,15,1,将它们建成一颗二叉排序树。(1)如果左子树不为空,则左子树上所有的节点的值均小于树的根节点的值。同样,如果右子树不为空,则右子树上所有节点的值均大于树的根节点的值。i:写一个算法完成上述操作。

2023-06-13 09:23:26 121

原创 计算之魂 第二章 例题2.4 (python)

这个问题是19实际的一位国际象棋棋手马克思贝瑟尔提出的,讲的是在8x8格的国际象棋上摆放8个皇后,使其不会互相攻击,有多少种摆法?

2023-05-16 16:18:14 131

原创 计算之魂 1.3 怎样寻找最好的算法(python)

给定一个实数序列,设计一个最有效的算法,找到一个总和最大的区间。总和最大的区间是从第5个数(23.2)到第10个数(5.4)

2023-05-05 11:20:40 159

原创 第 24 章 类元编程

每个人都知道,一开始调试的难度是编写程序的两倍。因此,如果您在编写程序时尽可能地聪明,您将如何调试它?Brian W. Kernighan and P. J. Plauger, The Elements of Programming Style类元编程是在运行时创建或定制类的艺术。类是 Python 中的一等对象,因此可以随时使用函数创建新类,而无需使用 class 关键字。类装饰器也是函数,但旨在检查、更改甚至用另一个类替换被装饰的类。最后,元类是类元编程最先进的工具:它们使您可以创建具有特殊特征

2022-03-22 18:58:02 1375

原创 第 23 章 属性描述符

了解描述符不仅可以使用更大的工具集,还可以更深入地了解 Python 的工作原理以及对其优雅设计的欣赏----------------Raymond Hettinger, Python core developer and guru描述符是在多个属性中重用相同访问逻辑的一种方式。例如,像 Django ORM 和 SQL Alchemy 这样的 ORM 中的字段类型是描述符,用于管理从数据库记录中的字段到 Python 对象属性的数据流,反之亦然。描述符是一个实现由 __get__、__se

2022-03-16 09:09:39 450

原创 第 22 章 动态属性和特性

特性的关键重要性在于,特性使您将公共数据属性作为类的公共接口的一部分公开是非常安全的,并且确实是可行的。-----Martelli, Ravenscroft & Holden, 为什么特性很重要数据属性和方法在 Python 中统称为属性。方法是可调用的属性。动态属性呈现与数据属性相同的接口——即obj.attr——但需要进行计算。这遵循 Bertrand Meyer 的统一访问原则:不管服务是由存储还是计算实现的,一个模块提供的所有服务都应该通过统一的方法使用。有几种方法可以在 P

2022-03-03 19:28:50 882

原创 第二十一章 异步编程

异步编程的常规方法的问题是异步程序要么做完所有的事情,要么一件事也没有做完。重写所有的代码是为了保证程序不会阻塞,否则只是在浪费时间。-------Alvaro Videla & Jason J. W. Williams, RabbitMQ in Action本章讨论三个密切相关的主要主题:Python 的 async def、await、async with 和 async for 结构; 支持这些结构的对象:原生协程以及上下文管理器、迭代器、生成器、推导式的异步变体; asyn.

2022-01-10 23:47:26 2508

原创 第二十章 Concurrent Executors

抨击线程的人往往是系统程序员,他们考虑的用例是一般的应用程序程序员在她的生活中永远不会遇到的用例。在应用程序程序员可能会遇到的用例中, 99%的情况下只需知道如何派生一堆独立的线程,然后用队列收集结果。 ------Michele Simionato,Python deep thinker本章重点介绍了 concurrent.futures.Executor 类,这些类封装了 Michele Simionato 描述的“生成一堆独立线...

2021-12-28 21:44:30 812 1

原创 第 十九 章 Python 中的并发模型

并发是同时处理很多事情。并行是同时执行很多事情。虽然概念不一样,但是是相关的。一是关于程序的结构,一是关于程序的执行。并发提供了一种构建解决方案的方法,以解决一个可能(但不一定)可并行的问题 --------Rob Pike,Co-inventor of the Go language本章是关于如何让 Python “同时处理很多事情”。这可...

2021-12-23 20:58:12 1425

原创 定位元素规则

CSS定位元素根据ID Tag Class 定位元素根据id属性 选择元素的语法是在id号前面加上一个#:#id值根据tag属性 选择元素的语法是直接输入tag: tag值根据class属性 选择元素的语法是在 class 值 前面加上一个点:.class值选择子元素和后代元素如果元素2是元素1的直接子元素,CSS Selector 选择子元素的表达式为:元素1>元素2如果元素2是元素1的 后代元素, CSS Selector 选择后代元素的语法是这样的...

2021-12-23 09:13:54 82

原创 第十八章 with、match 和 else 块

上下文管理器最终可能几乎与子程序本身一样重要。我们只是触及了它们的表面。 […]Basic 有一个 with 语句,很多语言都有 with 语句。但它们不做同样的事情,它们都做一些非常简单的事情,它们使您免于重复的点 号 查找属性,它们不会做事前准备和事后的清理。不要仅仅因为它的名字相同,就认为它是同一个东西。仅仅因为它的名字相同,不要认为它是同一个东西。 with 语句是一个非常重要的特性。 -------Raymon...

2021-12-15 11:53:26 844

原创 第 十七 章迭代器、生成器和经典协程

当我在自己的程序中看到模式时,我认为这是一个麻烦的迹象。程序的形状应该只反映它需要解决的问题。代码中的任何其他规律性都表明,至少对我来说,我对抽象的理解还不够深——通常是我手动完成的事情,本应该通过写代码来让宏的扩展自动实现。 --Paul Graham,Lisp hacker and venture capitalist迭代是数据处理的基础:不管数据是像素还是核苷酸,程序将计算应用于数据集。如果数...

2021-12-02 14:41:02 696

原创 第 十六 章 运算符重载

有一些事情让我感到有些不安,比如运算符重载。我决定不支持运算符重载,这完全是个人的选择,因为我看到太多 C++ 程序员在中滥用它James Gosling,Creator of Java在 Python 中,您可以使用如下公式计算复利:interest = principal * ((1 + rate) ** peri...

2021-11-18 20:59:25 684

原创 第 十五 章 关于类型提示的更多信息

我学到了一个惨痛的教训:对于小程序来说,动态类型是很棒的。但是对于大型程序,您需要更严格的方法。如果语言给你纪律而不是告诉你“好吧,你可以做任何你想做的事”,这样会对你的程序很有帮助。 ------------- Guido van Rossum, a fan of Monty Python本章是第 8 章的续篇,涵盖更多 Python 的渐进类型系统。主要议题是:重载的函数签名; Typing.Typ...

2021-11-15 19:50:33 1602

原创 第 十四 章 继承:究竟是好是坏

[...] 我们需要一个更好的关于继承的理论(现在仍然如此)。例如,继承和实例化(这是一种继承)混淆了语用学(例如分解代码以节省空间)和语义学(用于很多任务,例如:专业化、泛化、规范化等)。 --Alan Kay,The Early History of Smalltalk本章是关于继承和子类化。我将假设您对这些概念有基本的了解,您可能通过阅读 Python 教程或使用其他主流面向对象语言...

2021-11-07 13:12:17 369

原创 第十三章 接口、协议和 抽象基类

面向接口编程,不要面向实现编程 ----- Gamma, Helm, Johnson, Vlissides,First Principle of Object-Oriented Design面向对象的编程都是关于接口的。理解 Python 中的类型的最佳方法是了解它提供的方法——它的接口——如“类型由支持的操作定义”(第 8 章)中所述。根据编程语言,我们有一种或多种定义和使用接口的方法。从 Python 3.8 开始,我们有四种方式。它们在类型图(...

2021-10-31 15:30:40 408

原创 参数化装置和测试方法

pytest 在多个级别启用测试参数化:pytest.fixture() 允许参数化装置方法。 @pytest.mark.parametrize 允许在测试函数或类中定义多组参数和装置。 pytest_generate_tests 允许定义自定义参数化方案或扩展。@pytest.mark.parametrize:参数化测试函数内置的 pytest.mark.parametrize 装饰器可以对测试函数的参数进行参数化。下面是一个测试函数的典型示例,该函数执行检查某个输入是否会导致预期输出:

2021-08-26 11:18:27 311

原创 pytest 中的装置:显式、模块化、可扩展

软件测试装置初始化测试功能。它们提供了一个固定的基线,以便可靠地执行测试并产生一致、可重复的结果。初始化可以设置服务、状态或其他操作环境。这些由测试函数通过参数访问;对于测试函数使用的每个装置,测试函数的定义中通常都有一个参数(以装置命名)。pytest fixtures 提供了对经典 xUnit 风格的setup/teardown功能的显着改进:测试装置具有明确的名称,并通过在测试功能、模块、类或整个项目中声明其使用来激活。 测试装置以模块化方式实现,因为每个测试装置名称触发一个测试装置函数,该

2021-08-26 01:06:08 455

原创 Pytest-使用已有测试套件以及断言

pytest 使用已有的测试套件Pytest 可以与大多数现有的测试套件一起使用,但它的行为与其他测试运行程序不同,例如nose 或 Python 的默认单元测试框架。使用 pytest 运行现有的测试套件假设您想为某个地方的现有存储库做出贡献。在使用某种版本控制和(可选)设置 virtualenv 将代码拉入您的开发空间后,您将要运行:cd <repository>pip install -e . # Environment dependent alternatives

2021-08-20 16:46:12 959

原创 Pytest-用法和调用

通过 python -m pytest 调用 pytest您可以从命令行通过 Python 解释器调用测试:python -m pytest [...]这几乎等同于直接调用命令行脚本 pytest [...],只不过通过 python 调用还会将当前目录添加到 sys.path。可能的退出码运行 pytest 可能会产生六种不同的退出代码:退出代码 0: 所有测试用例均已收集并成功通过 退出代码 1: 收集并运行了测试用例,但有些测试失败了 退出代码 2 :测试执行被用户中断

2021-08-20 14:49:14 1556

原创 第 十二 章 为序列编写特殊方法

不要检查它是否是鸭子:而是检查它是否像鸭子一样嘎嘎叫,像鸭子一样走路,等等,具体怎么检查取决于所需的像鸭子一样的行为的子集和。 (comp.lang.python,2000 年 7 月 26 日) --------Alex Martelli在本章中,我们将创建一个类来表示多维 Vector 类...

2021-08-19 11:06:30 189

原创 Pytest-安装和入门

Pythons: Python 3.6, 3.7, 3.8, 3.9, PyPy3Platforms: Linux and WindowsPyPI package name:pytestDocumentation as PDF:download latestpytest 是一个框架,它使构建简单且可扩展的测试变得容易。测试具有表现力和可读性——不需要样板代码。在几分钟内开始对您的应用程序或库进行小型单元测试或复杂的功能测试。安装pytest在命令行中运行以下命令:pip i..

2021-08-17 19:57:09 1413

原创 第十一章 符合Python风格的对象

对于一个库或框架来说,Pythonic 是让 Python 程序员尽可能轻松自然地掌握如何执行任务 --Martijn Faassen, creator of Python and JavaScript frameworks多亏了 Python 数据模型,您的用户定义类型可以像内置类型一样自然地运行。这可以在没有继承的情况下完成,靠的是鸭子类型的精神:您只需实现对象按预期运行所需的方法。在前...

2021-08-15 23:26:35 264

原创 第十章 使用一等函数实现设计模式

是否符合模式并不是衡量好坏的标准。 ----Ralph Johnson,Coauthor of the Design Patterns classic在软件工程中,设计模式是解决常见设计问题的通用方法。你不需要知道设计模式来学习本章。我将解释示例中使用的模式。设计模式在编程中的使用由具有里程碑意义的书籍Design Patterns: Elements of Reusable Obj...

2021-08-08 18:27:09 146

原创 第九章 函数装饰器和闭包

有很多人抱怨,把这个特性命名为“装饰器”不好。其中一个主要原因是名称与GoF书中的用法不一致。装饰器这个名称可能更多地归功于它在编译器领域的使用——因为它会遍历和注解语法树。 ------PEP 318 — Decorators for Functions and Methods函数装饰器让我们在源代码中“标记”函数,以某种方式增强它们的行为。这是一个强大的功能,但掌握它需要理解闭包——当函...

2021-08-05 20:01:09 253

原创 第八章 函数中的类型提示

应该强调的是,Python 仍将是一种动态类型的语言,即使按照惯例,作者也不希望强制类型提示--Guido van Rossum, Jukka Lehtosalo, and Łukasz Langa,PEP 484—Type Hints2006 年,PEP 3107引入了 Python 3.0 的函数注释语法。九年来,该句法特征没有标准含义,无法进行实验。Python 社区尝试了不同的使用方式,并融合到 EP 484 — Type Hints,为注释赋予了非常具体的含义,自 Python 3.5..

2021-07-28 18:19:27 1305

原创 第七章 一等函数

I have never considered Python to be heavily influenced by functional languages, no matter what people say or think. I was much more familiar with imperative languages such as C and Algol 68 and although I had made functions first-class objects, I didn’t v

2021-07-16 16:56:03 189

原创 第六章 对象引用、可变性和回收

‘You are sad,’ the Knight said in an anxious tone: ‘let me sing you a song to comfort you. […] The name of the song is called “HADDOCKS’ EYES”.’‘Oh, that’s the name of the song, is it?’ Alice said, trying to feel interested.‘No, you don’t understand,’

2021-07-14 23:11:50 170

原创 第五章 类似记录的数据结构

Data classes are like children. They are okay as a starting point, but to participate as a grownup object, they need to take some responsibility.---------Martin Fowler and Kent BeckPython 提供了几种方法来构建一个包含一些字段,几乎没有或没有额外的功能的类。这种模式被称为“数据类”——而数据类是支持它的 Python

2021-07-14 10:44:42 643

原创 第四章 文本和字节序列

Humans use text. Computers speak bytes.----Esther Nam and Travis Fischer,Character Encoding and Unicode in PythonPython3明确区分了人类可读的文本字符串和原始序列字符串。隐式地把字节序列转换成Unicode文本已成过去。本章将讨论Unicode字符串、二进制序列以及二者之间转换时使用的编码。根据您的 Python 编程场景,深入理解Unicode...

2021-07-06 01:01:28 554

原创 第三章 字典和集合

Python基本上是字典包装成的语法糖----Lalo Martins,early digital nomad and Pythonista.本章的新内容dict 实现是在 Fluent Python 第一版中描述的内容演变而来的,本章主要的修订有:散列表算法的例子使用的是set,这样更容易理解。 涵盖在 dict 实例中保留键插入顺序的内存优化(在 Pytho...

2021-06-25 22:56:34 744

原创 第二章 序列构成的数组

和第一版的变化序列类型是 Python 中非常稳定的部分,因此这里的大部分变化不是更新,而是对 Fluent Python 第一版的改进。最重要的包括以下几点:容器序列和扁平序列的对比,序列内部结构的描述和图解 列表与元组的性能和存储特性的简单比较 具有可变元素的元组的注意事项,以及如何在需要时检测它们 具名元祖被放置到第五章,并将它和新的数据类进行对比内置序列总览标准库提供了多种用 C 实现的序列类型:容器序列:list、tuple 和 collections.deque 可以保存

2021-06-24 15:26:16 720

原创 第一章 Python数据模型

和第一版的变化:1 实现特殊方法能让自己的对象实现和支持以下的基本语言架构,并与之交互:集合 属性访问 迭代(包括使用async for的异步迭代) 运算符重载 函数和方法的调用 字符串的展示和格式化 使用关键字await的异步编程 对象的创建和销毁 管理上下文(包括使用async with的异步上下文管理器)本章更新的内容:本章与第一版相比几乎没有变化,因为它是对 Python 数据模型的介绍并且非常稳定。最显着的变化是:支持异步编程和其他新特性 包括“Collecti

2021-06-23 13:16:50 1948

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除