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版)
with
match
else
527
# (set! n (+ n 1))
case ['set!', Symbol(name), value_exp]:
env.change(name, evaluate(value_exp, env))
匹配对象:
一个列表,以
'set!'
开头,后跟一个
Symbol
和一个表达式。
操作结果:
使用表达式的求值结果更新
env
name
的值。
Environment.change
方法从局部环境到全局环境依序遍历,把找到的第一个
name
更新为新
值。如果不是为了实现
'set!'
关键字,
那么在这个解释器中,使用
Environment
类型的地
方都可以使用
Python
ChainMap
Python
nonlocal
Scheme
set!
解决同样的问题
set!
形式与
Python
中的
nonlocal
关键字作用类似:声明
nonlocal x
之后,可以使
x = 10
更新局部作用域外部定义的
x
变量。在
Python
中,如未声明
nonlocal x
x = 10
始终创建一个局部变量(详见
9.7
)。
类似地,
(set! x 10)
更新可能在函数局部环境外部定义的
x
。相比之下,
(define x
10)
中的
x
始终是局部变量,在局部环境中创建或更新。
nonlocal
(set! ...)
都是为了更新闭包中变量存储的程序状态。示例
9-13
使用
nonlocal
实现一个计算累计平均值的函数,在闭包中存储
count
total
。下面使用
lis.py
定义的
Scheme ...
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