首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

⑤ 定义一个 attrgetter 检索 name coord.lat 嵌套属性。 ⑥ 再次使用 attrgetter 按纬度对城市列表进行排序。...可调用对象提供了丰富语法声明形式参数,包括仅限关键字参数、仅限位置参数注释。...但Any是一个神奇类型,它同时位于类型层次结构顶部底部。它同时是最一般类型—所以一个参数n: Any接受每种类型最专门类型,支持每种可能操作。...此外,“重载签名”(第十五章)解释了如何使用@typing.overload声明重载函数签名,并包括了一个使用typing.Protocol有界TypeVar广泛示例。...在介绍一些类型同时,我们通过 Mypy 进行实验,以查看类型检查错误,并借助 Mypy 神奇reveal_type()函数推断类型。 最后一节介绍了如何注释位置参数可变参数。

29910

使用 white-space属性 实现保留文本域 textarea换行格式空格格式

背景 昨天产品需求评审,产品经理收到用户反馈,在系统中有一些文本域,用户希望在在文本中填写文本内容格式都能够被保留下来,目前只能保存文本内容,对于文本域换行空格,在显示时候都没有正确显示。...接到这个需求,我搜索了一下,网上大多数是获取文本域内容后,将其中换行符,空格替换成html标签,如, 使用JavaScript处理,然后将这些数据转化后,保存后端,在显示时,使用innerHTML...显示到一个div或p标签内。...white-space 属性解释 下面是white-space几个其及其解释 属性 换行符 空格制表符 文字换行 行尾空格 normal 合并 合并 换行 删除 nowrap 合并 合并 不换行...演示demo 此外我还专门写了一个简单demo演示使用white-space正确显示文本域中文本格式。

4.7K196
您找到你想要的搜索结果了吗?
是的
没有找到

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

“编程鸭子” 深入探讨了 Python 常规鸭子类型,包括如何使其更安全,同时保持其主要优势:灵活性。 “鹅式类型” 解释了使用 ABCs 进行更严格运行时类型检查。...示例 13-5 展示了我如何使用鸭子类型实现它。 示例 13-5....④ 这种显式转换是必要,因为SupportsComplex类型没有声明.real.imag属性,这在下一行中使用。例如,Vector2d没有这些属性,但实现了__complex__。...这本书是在 Python 3.4 之前编写,所以他们没有使用现在更受欢迎通过从abc.ABC子类化声明 ABC 语法(相反,他们使用了metaclass关键字,我们只在第二十四章中真正需要它)。...⁶ 现在让我们关注一个在多重继承中出现问题:如果一个类有两个超类,当我们调用super().attr时,Python 如何决定使用哪个属性,但两个超类都有同名属性

11510

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

你也可以在普通 Python 模块中使用@overload,只需在函数实际签名实现之前写上重载签名即可。示例 15-1 展示了如何Python 模块中注释实现sum。 示例 15-1。...④ 当我将key == 'authors'作为if条件保护这个块时,Mypy 在这一行发现了一个错误:““object"没有属性"iter””,因为它推断出从book.items()返回value类型为...然而,该函数可能对某些注解不可靠,我们看到 Python 核心开发人员仍在努力找到一种方法,在减少对 CPU 内存使用影响同时使类型提示在运行时可用。...注意__add__如何返回一个新Vector实例,并且不改变self或other。 警告 实现一元或中缀运算符特殊方法永远不应更改操作数。带有这些运算符表达式预期通过创建新对象产生结果。...__radd__方法,如果左操作数不实现__add__,或者实现了但返回NotImplemented以表示不知道如何处理右操作数,则 Python 将调用它作为后备。

13110

可维护Python代码库7条规则

Python 中,公有属性私有属性之间没有区别,但习惯上以 _ 开头属性是私有的。我们假定这些属性是类隐藏内部实现一部分,因此应该避免用单元测试测试它们。...到目前为止,我们只讨论了容易被开发者忽略作为开发者文档类型提示。像Mypy[3]这样静态类型检查工具旨在将类型提示作为定义正确代码规则执行。...你可以把mypy作为一个独立程序来使用,但是更舒适使用方法是把它作为一个插件嵌入到你编辑器中,这样你在写代码时候就可以得到实时反馈。至于如何使用,可以自行搜索。...但是如果使用静态类型检查,最好做法是定义接口。接口定义了最小属性方法,这些属性方法必须在类上实现才能被认为是一个子类型。...complains 这种 "基于特质 "多态性很难通过继承实现,这也是Protocol比abc模块中ABC抽象类更适合定义接口原因之一。

24430

用 Type Annotation 提升 Python 代码健壮性

我这个类型检查可以在使用 IDE 时候给我分析出方法参数类型返回。所谓『上医治未病,中医治已病,下医治大病』, 防范于未然,善之善者也。...Guido van Rossum: 好了,我打个岔,我在 dropbox 带领团队实现python typing,python 3.7 内置哦。...,我是希望 Python 是有类型 作为某段程序开发者维护者,我可以提升我重构速度。...作为某段程序调用方,可以快速知道我调用后得到东西究竟是什么。 但我又不希望这个声明不是强制性 我在构思程序时候,想专注于接口设计。...0x02 Python Typing 实战 - MyPY MyPy mypy 是一个可选静态分析器,官网介绍上说,mypy 将使你程序更加易懂,调试维护。

1.4K20

流畅 Python 第二版(GPT 重译)(十三)

提示 一些最好重构是通过删除由更新和更简单解决相同问题方法所导致冗余代码实现。这适用于生产代码以及书籍。 我们将从审查 Python 数据模型中为所有类定义属性方法开始。...现在让我们回到Checked类概念,其中Field描述符实现了运行时类型验证,并看看如何使用元类实现。...然而,当类像Movie一样使用__slots__时,不能同时拥有相同名称属性实例属性。每个描述符实例都是一个类属性,现在我们需要单独每个实例存储属性。代码使用带有单个_前缀描述符名称。...编写自己PersistentABCMeta元类,作为abc.ABCMetaPersistentMeta子类,使用多重继承,并将其作为Record唯一元类。...⁶ 这个解决方案避免使用None作为默认。避免空是一个好主意。一般情况下很难避免,但在某些情况下很容易。在 Python SQL 中,我更喜欢用空字符串代替None或NULL表示缺失数据。

9010

如何学习Python

之所以选中Python(大蟒蛇意思)作为程序名字,是因为他是一个Monty Python飞行马戏团爱好者。...就Guido本人看来,ABC这种语言非常优美强大,是专门为非专业程序员设计。但是ABC语言并没有成功,究其原因,Guido认为是非开放造成。...Guido决心在Python中避免这一错误(的确如此,Python与其它语言如C、C++Java结合非常好)。同时,他还想实现ABC中闪现过但未曾实现东西。...可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大语言,为小型团体所设计影响。并且结合了Unix shellC习惯。...接下来说说如何学习。 如何学习Python ---- 学习Python之前要有Python环境。首先,在我们系统上要安装Python

98360

python类型检测最终指南--Typing使用

多年以后,PEP 484根据Jukka Lehtosalo博士项目Mypy所做工作,定义了如何Python代码添加类型提示。添加类型提示主要方法是使用注释。...以及我们局部变量半径周长。 注意:以上代码需要通过mypy运行,如果用python运行会报错,另外mypy 版本不低于 0.610 变量注解 有时类型检查器也需要帮助确定变量类型。...但是Python类型系统非常强大,它可以支持多种更复杂类型。 在本节中,您将了解有关此类型系统更多信息,同时实现简单纸牌游戏。...__len_ _ _(),无论其标称类型如何. 目前正在通过PEP 544为Python带来一个成熟结构类型系统,该系统旨在添加一个称为协议概念。尽管大多数PEP 544已经在Mypy实现了。...但是,在Python 3.7及更高版本中,可以通过导入__future__属性annotations实现: from __future__ import annotations class Deck

4.6K10

飞跃式发展后现代 Python 世界

我当然不希望对类型“圣战”煽风点火,但同时肯定有大学派认为构建可靠应用程序需要有比只使用单元测试更加有力保障。...Benjamin Pierce对类型系统定义如下: …一种易于处理语法,通过根据计算类型对词组分类证明了缺少了特定程序行为 重点是证明有关运行空间属性, 所有程序行为运行空间替代了只是简单地罗列有限种情况运行空间...MyPy project找到了一个不错平衡点,允许有类型没有类型代码能够同时存于语言超集中。例如: ? 我们也能定义更加高级泛型结构例如函子单元 ?...接口 分解行为到可组合单元,而不是显式继承层次结构是一个Python没有解决好问题,经常导致噩梦般复杂使用mixin。然而通过使用ABC模组模仿静态定义接口可以缓解这个问题。 ?...用Z3实例解决N皇后问题可以被描述为Python表达式扩展SMT解决问题: ? end

92060

@程序员:Python 3.8正式发布,重要新功能都在这里

你可以使用pip从PyPI安装Mypy: $ python -m pip mypy 从某种意义上说,MypyPython类型检查器参考实现,并在Jukka Lehtasalo领导下由Dropbox...Mypy使用无法从最终类“ Base”继承”错误消息标记此示例。要了解有关Final@final更多信息,请参阅PEP 591。...,或者你使用是尚未声明键。...现在,你可以在表达式末尾添加=,它将同时打印表达式及其: >>> python = 3.8 >>> f"{python=}" 'python=3.8' 这是种简单方法,通常在交互式工作或添加打印语句调试脚本时最为有用...Python 3.8添加了一些新功能,可以在编码调试过程中为你提供帮助。 is==之间区别可能会造成混淆。后者用于检查是否有相等,而只有在对象相同时才为true。

2.3K20

Python 3.8已正式发布,重要新功能都在这里了

你可以使用pip从PyPI安装Mypy: $ python -m pip mypy 从某种意义上说,MypyPython类型检查器参考实现,并在Jukka Lehtasalo领导下由Dropbox...Mypy使用无法从最终类“Base”继承”错误消息标记此示例。要了解有关Final@final更多信息,请参阅PEP 591。...,或者你使用是尚未声明键。...现在,你可以在表达式末尾添加=,它将同时打印表达式及其: >>> python = 3.8 >>> f"{python=}" 'python=3.8' 这是种简单方法,通常在交互式工作或添加打印语句调试脚本时最为有用...Python 3.8添加了一些新功能,可以在编码调试过程中为你提供帮助。 is==之间区别可能会造成混淆。后者用于检查是否有相等,而只有在对象相同时才为true。

2.9K51

Python 3.8正式发布,重要新功能都在这里

你可以使用pip从PyPI安装Mypy: $ python -m pip mypy 从某种意义上说,MypyPython类型检查器参考实现,并在Jukka Lehtasalo领导下由Dropbox...Mypy使用无法从最终类“ Base”继承”错误消息标记此示例。要了解有关Final@final更多信息,请参阅PEP 591。...,或者你使用是尚未声明键。...现在,你可以在表达式末尾添加=,它将同时打印表达式及其: >>> python = 3.8 >>> f"{python=}" 'python=3.8' 这是种简单方法,通常在交互式工作或添加打印语句调试脚本时最为有用...Python 3.8添加了一些新功能,可以在编码调试过程中为你提供帮助。 is==之间区别可能会造成混淆。后者用于检查是否有相等,而只有在对象相同时才为true。

1.5K30

Python如何使用GUI自动化控制键盘鼠标实现高效办公

参考链接: 使用Python进行鼠标键盘自动化 在计算机上打开程序进行操作最直接方法就是,直接控制键盘鼠标模仿人们想要进行行为,就像人们坐在计算机跟前自己操作一样,这种技术被称为“图形用户界面自动化...安装完毕后在python界面引入模块   1.2 解决程序出现错误,及时制止  在开始 GUI 自动化之前,你需要知道如何解决可能发生问题。...Python 能以很快速度移动鼠标并击键。实际上,它可能太快,从而导致其他程序跟不上。而且, 如果出了问题,但你程序继续到处移动鼠标,可能很难搞清楚程序到底在做什么,或者如何从问题中恢复。...你可能没有办法及时关闭IDLE运行窗口或者是DOS界面的python运行窗口,幸而python有几种办法防止或者恢复这种错误。 ...1.2.1 通过任务管理器关闭程序  windows中可以使用 Ctrl+Alt+Delete键启动,并且在进程中进行关闭,或者直接注销计算机阻止程序作为  1.2.2 暂停自动防故障设置

3.9K31

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

声明实例字段将成为生成__init__中参数。Python 不允许在具有默认参数之后使用没有默认参数,因此在声明具有默认字段之后,所有剩余字段必须也具有默认。...__post_init__ 常见用例是验证基于其他字段计算字段。我们将学习一个简单示例,该示例使用 __post_init__ 实现这两个目的。...当导入/导出需要更改时,您应该实现自己构建器方法,而不是使用给定作为字典”方法或标准构造函数。...现在我们改变主题,看看如何编写匹配任意类实例而不仅仅是我们在“使用序列进行模式匹配”使用映射进行模式匹配”中看到序列映射模式。 匹配类实例 类模式旨在通过类型—可选地—属性匹配类实例。...将可变类型用作参数默认:不好主意 具有默认可选参数是 Python 函数定义一个很好特性,允许我们 API 在保持向后兼容同时发展。但是,应避免将可变对象作为参数默认

4600

深入理解 Python 类型提示

计算机如何编译我们代码 为了弄清楚 Python 核心开发人员在尝试用类型提示做什么,我们Python 中分几个层次,从而更好地理解计算机编程语言工作原理。...Python 如何处理数据类型 Python 是动态类型语言,这意味着他只会在你运行程序时候检查你声明变量类型。正如我们在上述代码片段中看到,你不必事先计划类型内存分配。...那么,Python 做了什么提升与静态类型语言相同易读性呢? Python 类型提示 下面是类型提示来源,作为代码旁边注释,称为类型注释或类型提示。我将称它们为带类型提示。...如果尝试在不兼容类型上运行方法,将只会出现问题。例如尝试对字典切片或从字符串中弹出。 从实现细节来看: 虽然这些注释在运行时通过 annotations 属性可用,但在运行时不会进行类型检查。...这取决于你使用场景,就像 Guido mypy 文档里说mypy 目标不是说服每个人都编写静态类型 Python,不管是现在还是将来,静态类型编程完全是可选

1.1K30

爬虫(108)Python 3.8超酷新功能(接近一万字,请耐心享用,而且建议收藏)

您可以使用以下方法从PyPI安装Mypy pip: $ python -m pip install mypy 从某种意义上说,MypyPython类型检查器参考实现,并在 Jukka Lehtasalo...第三PEP允许更多特定类型提示是PEP 589,其引入TypedDict。可以使用类似于typed符号指定字典中键类型NamedTuple。 传统上,字典使用注释Dict。...,还是使用了未声明键。...现在=,您可以在表达式末尾添加,它将同时打印该表达式及其: >>> python = 3.8 >>> f"{python=}" 'python=3.8' 这是个捷径,通常在交互式工作或添加打印语句调试脚本时最有用...请注意,如果您自己运行代码,则可能需要一分钟时间收集不同时间样本。 NormalDist具有许多方便属性方法。请参阅文档以获取完整列表。

2.5K20

如何更好使用 Python 类型提示?

使用动态语言一时爽,代码重构火葬场。相信你一定听过这句话,单元测试一样,虽然写代码时候花费你少量时间,但是从长远来看,这是非常值得。本文分享如何更好理解使用 Python 类型提示。...1、类型提示仅在语法层面有效 类型提示(自 PEP 3107 开始引入)用于向变量、参数、函数参数以及它们返回、类属性方法添加类型。...但是,从开发人员经验角度来看,类型提示有很多好处。 1、使用类型提示,尤其是在函数中,通过类型提示明确参数类型所产生结果类型,非常便于阅读理解。...2、类型提示消除了认知开销,并使代码更易于阅读调试。考虑到输入输出类型,你可以轻松推断对象以及它们如何调用。 3、类型提示可改善代码编辑体验。...,就可以使用 Any def bar(input: Any): ... 10、Optional 用法 如果你函数使用可选参数,具有默认,那么你可以使用类型模块中 Optional 类型。

1.4K10

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

可迭代是提供迭代器对象,Python 使用支持诸如: for循环 列表、字典集合推导 解包赋值 集合实例构建 本章涵盖以下主题: Python 如何使用iter()内置函数处理可迭代对象...如何Python实现经典迭代器模式 经典迭代器模式如何被生成器函数或生成器表达式替代 详细介绍生成器函数工作原理,逐行描述 利用标准库中通用生成器函数 使用yield...该接口在collections.abc.Iterator ABC 中得到规范化,它声明了__next__抽象方法,并且子类化Iterable——在那里声明了抽象__iter__方法。...提示 区分普通函数生成器函数唯一语法是后者函数体中有一个yield关键字。有人认为应该使用新关键字gen声明生成器函数,而不是def,但 Guido 不同意。...不幸是,Python 官方文档标准库现在使用不一致术语指代用作协程生成器,迫使我采用“经典协程”限定词以与较新“本机协程”对象形成对比。

15010
领券