伯克利 CS61A 课堂笔记 11 —— Mutability
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。
目录
01 Objects
02 Example: Strings
Ⅰ Representing Strings: the ASCII Standard
Ⅱ Representing Strings: the Unicode Standard
03 Mutation Operations
Ⅰ Some Objects Can Change
Ⅱ Mutation Can Happen Within a Function Call
04 Tuples
05 Mutation
Ⅰ Sameness and Change
Ⅱ Identity Operators
Ⅲ Mutable Default Arguments are Dangerous
06 Mutable Functions
Ⅰ A Function with Behavior That Varies Over Time
Ⅱ Mutable Values & Persistent Local State
附:词汇解释
01 Objects
>> from datetime import date
>>> date
<class datetime.date>>>> today = date(2025, 2, 20)
>>> today
datetimme.date(2025, 2, 20)
>>> freedom = date(2025, 5, 12)
>>> freedom
datetime.date(2025, 5, 12)>>> str(freedom - today)
'81 days, 0:00:00'
>>> today.year
2025
>>> today.month
2
>>> today.strftime('%A %B %d')
'Thursday February 20'
Objects represent information, which consist of data and behavior, bundled together to create abstractions.
Objects represent things, but also properties, interactions, & processes.
A type of objects is called a class and classes are first-class values in Python.
Object-oriented programming: A metaphor for organizing large programs; Special syntax that can improve the composition of programs.
In Python, every value is an object: All objects have attributes; A lot of data manipulation happens through object methods; Functions do one thing, while objects do many related things.
02 Example: Strings
>>> s = 'Hello'#String特有的函数
>>> s.upper()
'HELLO'
>>> s.lower()
'hello'
>>> s.swapcase()
'hELLO'
Ⅰ Representing Strings: the ASCII Standard
American Standard Code for Information Interchange.

Layout was chosen to support sorting by character code.
Row indexed 2-5 are a useful 6-bit (64 element) subset.
Control characters were designed for transmission.
>>> a = 'A'
>>> ord(a)
65
>>> hex(ord(a))
'0x41'>>> print('\n\n\n') #空三格>>> print('\a\a\a') #响三声
Ⅱ Representing Strings: the Unicode Standard

109, 000 characters.
93 scripts (organized).
Enumeration of character properties, such as case.
A canonical name for every character.

U+0058 LATIN CAPITAL LETTER X
U+263a WHITE SMILING FACE
U+2639 WHITE FROWNING FACE
>>> from unicodedate import name, lookup
>>> name('A')
'LATIN CAPITAL LETTER A'
>>> name('a')
'LATIN SMALL LETTER A'>>> lookup('WHITE SMILING FACE')
😊
>>> lookup('SNOWMAN')
⛄
>>> lookup('SOCCER BELL')
⚽
>>> lookup('BABY')
👶
>>> lookup('BABY').encode()
b'\xf0\x9f\x91\9b6
03 Mutation Operations
>>> suits = ['coin', 'string', 'myriad']
>>> original_suits = suits#删
>>> suits.pop()
>>> suits.remove('string')
>>> suits
['coin']#增
>>> suits.append('cup')
>>> suits.expend(['sword', 'club'])
>>> suits
['coin', 'cup', 'sword', 'club']#改
>>> suits[2] = 'spade'
>>> suits[0:2] = ['heart', 'diamond']
>>> suits
['heart', 'diamond', 'spade', 'club']>>> original_suits
['heart', 'diamond', 'spade', 'club']
Ⅰ Some Objects Can Change
The same object can change in value throughout the course of computation.




All names that refer to the same object are affected by a mutation.
Only objects of mutable types can change: lists & dictionaries.
>>> numerals = {'I': 1, 'v': 5, 'X': 10}
>>> numerals
{'V': 5, 'X': 10; 'I':1}#查改
>>> numerals['X']
10
>>> numerals.get('X')
10
>>> numerals['X'] = 11
>>> numerals['X']
11
>>> numerals
{'V': 5, 'X': 11, 'I':1}#增删
>>> numerals['L'] = 50
>>> numerals.pop('X')
11
>>> numerals
{'V': 5, 'I':1, 'L': 50}
Ⅱ Mutation Can Happen Within a Function Call
A function can change the value of any object in its scope.
>>> four = [1, 2, 3, 4]
>>> len(four)
4
>>> mustery(four)
>>> len(four)
2def mystery(s):s.pop()s.pop()def mystery(s):s[2:] = []
>>> four = [1, 2, 3, 4]
>>> len(four)
4
>>> another_mystery()
>>> len(four)
2def another_mystery(s):four.pop()four.pop()

04 Tuples
#Tuple的精髓在于逗号,而不是小括号
>>> (3, 4, 5, 6)
(3, 4, 5, 6)
>>> 3, 4, 5, 6
(3, 4, 5, 6)>>> ()
()
>>> tuple()
()
>>> tuple([3, 4, 5, 6])
(3, 4, 5, 6)>>> 2,
(2,)
>>> (2,)
(2,)
>>> 2
2>>> (3, 4) + (5, 6)
(3, 4, 5, 6)
>>> 5 in (3, 4, 5)
True
#Dictionary的key中严禁出现list
>>> {(1, 2): 3}
{(1, 2): 3}
>>> {[1, 2]: 3}
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> {(1, [2]): 3}
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
Tuples are Immutable Sequences:
Immutable values are protected from mutation.
>>> turtle = (1, 2, 3)
>>> ooze()
>>> turtle
(1, 2, 3)>>> turtle = [1, 2, 3]
>>> ooze()
>>> turtle
['Anything could be inside!']
The value of an expression can change because of changes in names or objects.

An immutable sequence may still change if it contains a mutable values as an element.

05 Mutation
Ⅰ Sameness and Change
As long as we never modify objects, a compound object is just the totality of its pieces and a rational number is just its numerator and denominator. But, this view is no longer valid in the presence of change.
A compound data object has an "identity" in addition to the pieces of which it is composed.
A list is still "the same" list even if we change its contents. Conversely, we could have two lists that happen to have the same contents, but are different.

Ⅱ Identity Operators

>>> [10] == [10]
True>>> a = [10]
>>> b = [10]
>>> a == b
True
>>> a is b
False>>> a.extend([20, 30])
>>> a
[10, 20, 30]
>>> b
[10]>>> c = b
>>> c is b
True
>>> c.pop()
>>> c
[]
>>> b
[]
>>> a
[10, 20, 30]
Ⅲ Mutable Default Arguments are Dangerous
A default argument is part of a function value, not generated by a call.
>>> def f(s = []):
... s.append(5)
... return len(s)
>>> f()
1
>>> f()
2
>>> f()
3

06 Mutable Functions
Ⅰ A Function with Behavior That Varies Over Time
Let's model a bank account that has a balance of $100.

Ⅱ Mutable Values & Persistent Local State
def make_withdraw_list(balance):b = [balance]def withdraw(amount):if amount < b[0]:return 'Insufficient funds'b[0] = b[0] - amountreturn b[0]withdraw = make_withdraw_list(100)
withdraw(25)

附:词汇解释
bundle / ˈbʌnd(ə)l / 捆绑、property 属性、interaction / ˌɪntərˈækʃ(ə)n / 交互、object-oriented /ˈɑːbdʒekt ɔːrientɪd / 面向对象的、metaphor / ˈmetəfər / 象征,比喻、syntax / ˈsɪntæks / 语法、data manipulation / məˌnɪpjuˈleɪʃn / 数据操作、first-class 优秀的,一流的、interchange 信息交换、row 行、column / ˈkɑːləm / 列、tilde / ˈtɪldə / 波浪号、subset / ˈsʌbset / 子集、transmission / trænzˈmɪʃ(ə)n / 传播、bell 钟,铃、upper 上层的、lower 下层的、unicode / ˈjuːnɪˌkoʊd / 统一码、script / skrɪpt /(一种语言的)字母系统,字母表、enumeration / ɪˌnuːməˈreɪʃn / 枚举、canonical / kəˈnɑːnɪkl / 标准的,规范的、frown / fraʊn / 皱眉、Latin / ˈlætn / 拉丁语、mutation / mjuːˈteɪʃ(ə)n / 改变、coin 硬币、myriad / ˈmɪriəd / 一万、line feed [计]换行、suit / suːt / 套装、sword / sɔːrd / 剑、spade / speɪd / 锹,铲、diamond /ˈdaɪəmənd / 钻石、mutable 可变的、scope / skoʊp / 范围,领域、mystery / ˈmɪstəri / 神秘的、numerator / ˈnuːməreɪtər / 分子、denominator / dɪˈnɑːmɪneɪtər / 分母、identity / aɪˈdentəti / 个体、default 默认的、generate 产生,引起、withdraw 提,取、persistent 持续的,反复出现的、insufficient / ˌɪnsəˈfɪʃ(ə)nt / 不充分的、assignment 赋值、balance 余款
相关文章:
伯克利 CS61A 课堂笔记 11 —— Mutability
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Objects 02 Example: Strings Ⅰ Representing Strings: the ASCII Standard Ⅱ Representing Strings: the Unicode Standard 03 Mutatio…...
从零开始构建一个小型字符级语言模型的详细教程(基于Transformer架构)之一数据准备
最近特别火的DeepSeek,是一个大语言模型,那一个模型是如何构建起来的呢?DeepSeek基于Transformer架构,接下来我们也从零开始构建一个基于Transformer架构的小型语言模型,并说明构建的详细步骤及内部组件说明。我们以构建一个字符级语言模型(Char-Level LM)为例,目标是通…...
云原生DevOps:Zadig架构设计与企业实践分析
在云原生时代,随着微服务架构和容器技术的广泛应用,软件交付模式正经历着深刻的变革。DevOps作为一种文化、运动和实践,正逐渐成为企业快速交付高质量软件的关键。本文将探讨在云原生背景下,DevOps工程架构的设计与实践࿰…...
UMLS数据下载及访问
UMLS数据申请 这个直接在官网上申请即可,记得把地址填全,基本都会拿到lisence。 UMLS数据访问 UMLS的数据访问分为网页访问,API访问以及数据下载后的本地访问,网页访问,API访问按照官网的指示即可,这里主…...
DEX-EE三指灵巧手:扩展AI与机器人研究的边界
DEX-EE三指灵巧手,由Shadow Robot与Google DeepMind合作开发,以其先进技术和设计,正在引领AI与机器人研究的新趋势。其高精度传感器和灵活的机械手指,能够捕捉复杂的环境数据,为强化学习实验提供了可靠支持。 Shadow R…...
在ubuntu上用Python的openpyxl模块操作Excel的案例
文章目录 安装模块读取Excel数据库取数匹配数据和更新Excel数据 在Ubuntu系统的环境下基本职能借助Python的openpyxl模块实现对Excel数据的操作。 安装模块 本次需要用到的模块需要提前安装(如果没有的话) pip3 install openpyxl pip3 install pymysql在操作前,需…...
【STM32】外部时钟|红外反射光电开关
1.外部时钟 单片机如何对外部触发进行计数?先看一下内部时钟,内部时钟是接在APB1和APB2时钟线上的,APB1,APB2来自stm32单片机内部的脉冲信号,也叫内部时钟。我们用来定时。同样我们可以把外部的信号接入单片机,来对其…...
深入了解 DevOps 基础架构:可追溯性的关键作用
在当今竞争激烈的软件环境中,快速交付强大的应用程序至关重要。尽管如此,在不影响质量的情况下保持速度可能是一项艰巨的任务,这就是 DevOps 中的可追溯性发挥作用的地方。通过提供软件开发生命周期 (SDLC) 的透明视图…...
Django+Vue3全栈开发实战:从零搭建博客系统
文章目录 1. 开发环境准备2. 创建Django项目与配置3. 设计数据模型与API4. 使用DRF创建RESTful API5. 创建Vue3项目与配置6. 前端页面开发与组件设计7. 前后端交互与Axios集成8. 项目优化与调试9. 部署上线10. 总结与扩展10.1 项目总结10.1.1 技术栈回顾10.1.2 项目亮点 10.2 扩…...
深度学习之图像回归(一)
前言 图像回归任务主要是理解一个最简单的深度学习相关项目的结构,整体的思路,数据集的处理,模型的训练过程和优化处理。 因为深度学习的项目思路是差不多的,主要的区别是对于数据集的处理阶段,之后模型训练有一些小…...
使用vue-office报错TypeError: ft.createElementVNode is not a function
支持多种文件(.docx、.xlsx、.xls、.pdf、.pptx)预览的vue组件库,支持vue2/3。也支持非Vue框架的预览。 不支持.doc、.ppt(2003年及以前的版本) 官网:https://www.npmjs.com/package/vue-office/excel?activeTabreadme 官方有实…...
《深度揭秘:DeepSeek如何解锁自然语言处理密码》
在人工智能蓬勃发展的当下,自然语言处理(NLP)成为了连接人类与机器的关键桥梁。作为该领域的佼佼者,DeepSeek以其卓越的语义理解和生成能力,备受瞩目。今天,就让我们深入探寻DeepSeek在自然语言处理中实现语…...
解决 Mac 只显示文件大小,不显示目录大小
前言 在使用 mac 的时候总是只显示文件的大小,不显示文件夹的大小,为了解决问题可以开启“计算文件夹”。 步骤 1.进入访达 2.工具栏点击“显示”选项,点击 “查看显示选项” 3.勾选 显示“资源库"文件夹 和 计算所有大小 或者点击…...
从零开始学习PX4源码9(部署px4源码到gitee)
目录 文章目录 目录摘要1.gitee上创建仓库1.1 gitee上创建仓库PX4代码仓库1.2 gitee上创建子仓库2.固件在gitee部署过程2.1下载固件到本地2.2切换本地分支2.3修改.gitmodules内容2.4同步子模块仓库地址2.5同步子模块仓库地址更新(下载)子模块3.一级子模块和二级子模块的映射关…...
遗传算法与深度学习实战系列,自动调优深度神经网络和机器学习的超参数
遗传算法与深度学习实战系列文章 目录 进化深度学习生命模拟及其应用生命模拟与进化论遗传算法中常用遗传算子遗传算法框架DEAPDEAP框架初体验使用遗传算法解决N皇后问题使用遗传算法解决旅行商问题使用遗传算法重建图像遗传编程详解与实现粒子群优化详解与实现协同进化详解与…...
【Python爬虫(28)】爬虫时代,数据安全的坚盾与隐私保护的密锁
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
分布式光纤声波振动技术在钻井泄漏检测中的应用
在石油天然气的钻井作业中,及时发现并定位泄漏点对于保障开采安全、降低环境污染以及避免经济损失至关重要。传统的泄漏检测方法往往存在局限性,而分布式光纤声波振动技术凭借其独特的优势,正逐渐成为钻井过程中寻找泄漏的有力工具。 技术原理…...
2025年AI数字人大模型+智能家居HA引领未来(开源项目名称:AI Sphere Butler)
介绍 开源项目计划:AI Sphere Butler 打造全方位服务用户生活的AI全能管家——代号**“小粒”**(管家名称可以随意自定义) GitHub地址:https://github.com/latiaoge/AI-Sphere-Butler 项目名称:AI Sphere Butler&…...
UGUI RectTransform的SizeDelta属性
根据已知内容,SizeDelta offsetMax - offsetMin 1.锚点聚拢情况下 输出 那么此时SizeDelta就是UI元素的长宽大小 2. 锚点分散时 引用自此篇文章中的描述 揭秘!anchoredPosition的几何意义! SizeDelta offsetMax - offsetMin (rectMax…...
三甲医院网络架构与安全建设实战
一、设计目标 实现医疗业务网/卫生专网/互联网三网隔离 满足等保2.0三级合规要求 保障PACS影像系统低时延传输 实现医疗物联网统一接入管控 二、全网拓扑架构 三、网络分区与安全设计 IP/VLAN规划表 核心业务配置(华为CE6865) interface 100G…...
Ubuntu 防火墙ufw详解
ufw(Uncomplicated Firewall)是 Ubuntu 中一个简单易用的防火墙管理工具,基于 iptables,旨在简化防火墙配置。以下是 ufw 的详细说明和使用方法: 1. 安装 ufw 在大多数 Ubuntu 系统中,ufw 已经预装。如果没…...
机器学习笔记——常用损失函数
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数,各函数的使用场景。 热门专栏 机器学习 机器学习笔记合集 深度学习 深度学习笔记合集 文章目录 热门…...
计算机网络:应用层 —— 动态主机配置协议 DHCP
文章目录 什么是 DHCP?DHCP 的产生背景DHCP 的工作过程工作流程地址分配机制 DHCP 中继代理总结 什么是 DHCP? 动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,用于自动分…...
23种设计模式 - 解释器模式
模式定义 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言(如数控系统的G代码)定义文法规则,并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类,实现…...
C++中string常用方法操作指南(后续补充)
文章目录 1. 定义和初始化字符串2. 字符串的基本操作2.1 获取字符串长度2.2 检查字符串是否为空2.3 访问字符串中的字符 3. 输入字符串4. 常用的字符串操作4.1 截取子字符串4.2 查找子字符串4.3 替换字符串4.4 插入字符串4.5 删除字符串 5. 字符串的排序6. 字符串与数值的转换6…...
遥感与GIS在滑坡、泥石流风险普查中的实践技术应用
原文>>> 遥感与GIS在滑坡、泥石流风险普查中的实践技术应用 我国是地质灾害多发国家,地质灾害的发生无论是对于地质环境还是人类生命财产的安全都会带来较大的威胁,因此需要开展地质灾害风险普查。利用遥感(RS)技术进行地…...
14天速成PAT-BASIC基础知识!
两周关于PAT的基础学习计划。 Day 1: 基本语法和输入输出 知识点 数据类型(int, long, float, double, char)变量声明和初始化输入输出函数(scanf, printf)控制结构(if-else, switch, for, while, do-while࿰…...
Unity性能优化个人经验总结(不定期更新)
字符串 在使用常量或静态变量 Update、LateUpdate、FixedUpdate等每帧调用或调用频率很高的函数内使用字符串时,均使用常量或静态变量处理。 原因解释:除了常量或静态变量的字符串将会在每一次调用时,将会new一个新的字符串,导…...
vue3面试题进阶版
覆盖 Vue3 的核心知识点、高频考点及实战场景 一、基础与核心概念 MVVM 与 MVC 的区别 MVC:Model(数据)、View(视图)、Controller(控制器),视图更新需手动操作 DOM。MVVM࿱…...
python小项目编程-初级(5、词频统计,6、简单得闹钟)
1、词频统计 统计文本文件中每个单词出现的频率。 实现 import tkinter as tk from tkinter import filedialog, messagebox from collections import Counter import reclass WordFrequencyCounter:def __init__(self, master):self.master masterself.master.title("…...
