Skip to Content
流畅的Python(第2版)
book

流畅的Python(第2版)

by Luciano Ramalho
April 2023
Intermediate to advanced
769 pages
25h 16m
Chinese
Posts & Telecom Press
Content preview from 流畅的Python(第2版)
类型提示进阶
409
这个示例的目的是在函数签名中使用
BookDict
一开始为空的容器通常需要注解,否则
Mypy
无法推导出元素的类型。
5
Mypy
能理解
isinstance
所做的检查,并会在这个代码块中把
value
看作一个
list
最初,守护这个代码块的
if
条件是
key == 'authors'
,但是
Mypy
报错:
"object" has
no attribute "__iter__"
。这是因为,经
Mypy
导,
book.items()
返回的
value
类型为
object
,而
object
不支持这个生成器表达式所需的
__iter__
方法。后来换成
isinstance
就好了,因为
Mypy
知道,在这个代码块中,
value
的值是一个
list
示例
15-9
定义了一个解析
JSON
字符串并返回
BookDict
的函数。
示例
15-9
books_any.py
from_json
函数
def from_json(data: str) -> BookDict:
whatever = json.loads(data)
return whatever
json.loads()
的返回值类型为
Any
6
可以返回
whatever
Any
类型),因为
Any
与任何类型都
相容
,包括声明的返回值类型
BookDict
要特别注意示例
15-9
的第
2
个标
号处。
Mypy
不会标记那行代码有问题,但是在运行时,
whatever
的值或许不满足
BookDict
结构——甚至可能根本就不是字典。
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Python高级编程(第2版)

Python高级编程(第2版)

Posts & Telecom Press, Michał Jaworski, Tarek Ziadé
Python贝叶斯分析(第2版)

Python贝叶斯分析(第2版)

Posts & Telecom Press, Osvaldo Martin
高效能PYTHON程式設計

高效能PYTHON程式設計

Micha Gorelick, Ian Ozsvald

Publisher Resources

ISBN: 9787115612366