Skip to content

Commit d11efe6

Browse files
committed
更新赋值表达式
1 parent a9a1818 commit d11efe6

File tree

1 file changed

+40
-32
lines changed

1 file changed

+40
-32
lines changed

Learning Python/3、语句和语法/1. 赋值、表达式和打印.ipynb

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"collapsed": true
77
},
88
"source": [
9-
"# 赋值语句 \n",
9+
"# 1. 赋值语句 \n",
1010
"基本形式是等号左边写赋值语句的目标,要赋值的对象位于右侧。 \n",
1111
"- **赋值语句建立对象引用值。**赋值语句总是建立对象的引用值,而不是复制对象。因此,Python变量更像是指针,而不是数据存储区域。 \n",
1212
"- **变量名在首次赋值时会被创建。**一旦赋值了,每当这个变量名出现在表达式时,就会被其所引用的值取代。 \n",
@@ -18,7 +18,7 @@
1818
"cell_type": "markdown",
1919
"metadata": {},
2020
"source": [
21-
"## 赋值语句的形式\n",
21+
"## 1.1 赋值语句的形式\n",
2222
"\n",
2323
"**运算**|**解释**\n",
2424
":-------|:------\n",
@@ -68,7 +68,7 @@
6868
"cell_type": "markdown",
6969
"metadata": {},
7070
"source": [
71-
"## 序列赋值 "
71+
"## 1.2 序列赋值 "
7272
]
7373
},
7474
{
@@ -189,7 +189,7 @@
189189
"cell_type": "markdown",
190190
"metadata": {},
191191
"source": [
192-
"## 扩展序列解包 \n",
192+
"## 1.3 扩展序列解包 \n",
193193
"一个带有单个星号的名称 `*X`,可以在赋值目标中使用,以指定对于序列的一个更为通用的匹配——一个列表赋给了带星号的名称,该列表收集了序列中没有赋值给其他名称的所有项。 \n",
194194
"\n",
195195
"**扩展解包的实际应用**"
@@ -213,7 +213,7 @@
213213
],
214214
"source": [
215215
"seq = [1, 2, 3, 4]\n",
216-
"a, *b = seq # a匹配第一项,b匹配剩下的内容\n",
216+
"a, *b = seq # a 匹配第一项,b 匹配剩下的内容\n",
217217
"a"
218218
]
219219
},
@@ -713,7 +713,7 @@
713713
"cell_type": "markdown",
714714
"metadata": {},
715715
"source": [
716-
"## 多目标赋值语句 \n",
716+
"## 1.4 多目标赋值语句 \n",
717717
"直接把所有提供的变量名都赋值给右侧的对象。"
718718
]
719719
},
@@ -772,7 +772,8 @@
772772
"cell_type": "markdown",
773773
"metadata": {},
774774
"source": [
775-
"在这里,修改b只会对b发生修改,因为数字不支持在原处的修改。只要赋值对象是不可变的,即使有一个以上的变量名使用该对象也无所谓。 \n",
775+
"在这里,修改 b 只会对 b 发生修改,因为数字不支持在原处的修改。只要赋值对象是不可变的,即使有一个以上的变量名使用该对象也无所谓。 \n",
776+
"\n",
776777
"当变量初始值设为空的可变对象时(诸如列表或字典),我们就得小心一点:"
777778
]
778779
},
@@ -802,7 +803,8 @@
802803
"cell_type": "markdown",
803804
"metadata": {},
804805
"source": [
805-
"因为a和b引用相同的对象,通过b在原处附加值上去,通过a也会看见所有的效果。 \n",
806+
"因为 a 和 b 引用相同的对象,通过 b 在原处附加值上去,通过 a 也会看见所有的效果。 \n",
807+
"\n",
806808
"为避免这个问题,要在单独的语句中初始化可变对象,以便分别执行独立地常量表达式来创建独立地空对象:"
807809
]
808810
},
@@ -833,7 +835,7 @@
833835
"cell_type": "markdown",
834836
"metadata": {},
835837
"source": [
836-
"## 增强赋值语句 \n",
838+
"## 1.5 增强赋值语句 \n",
837839
"`X += Y`      `X &= Y`       `X -= Y`        `X |= Y` \n",
838840
"`X *= Y`      `X ^= Y`       `X /=Y`          `X >>= Y` \n",
839841
"`X %= Y`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`X <<= Y`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`X **= Y`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`X //= Y`"
@@ -844,6 +846,7 @@
844846
"metadata": {},
845847
"source": [
846848
"增强赋值语句使用于任何支持隐式二元表达式的类型。 \n",
849+
"\n",
847850
"用于字符串时,增强形式会改为执行合并运算。"
848851
]
849852
},
@@ -875,7 +878,7 @@
875878
"source": [
876879
"增强赋值语句有三个优点:\n",
877880
"- 程序员输入减少。\n",
878-
"- 左侧只需计算一次。在完整形式X = X + Y中,X出现两次,必须执行两次,因此,增强赋值语句通常执行得更快。\n",
881+
"- 左侧只需计算一次。在完整形式 X = X + Y 中,X 出现两次,必须执行两次,因此,增强赋值语句通常执行得更快。\n",
879882
"- 优化技术会自动选择。对于支持原处修改的对象而言,增强形式会自动执行原处的修改运算,而不是相比来说速度更慢的复制。"
880883
]
881884
},
@@ -885,6 +888,7 @@
885888
"source": [
886889
"**增强赋值以及共享引用** \n",
887890
"“+=”对列表是做原处修改,不像“+”合并,总是生成新的对象。 \n",
891+
"\n",
888892
"就所有共享引用情况而言,只有其他变量名引用的对象被修改,其差别才可能体现出来:"
889893
]
890894
},
@@ -906,9 +910,9 @@
906910
],
907911
"source": [
908912
"L = [1, 2]\n",
909-
"M = L # L和M引用相同对象\n",
913+
"M = L # L 和 M 引用相同对象\n",
910914
"L = L + [3, 4] # 合并创建一个新的对象\n",
911-
"L, M # 改变L,但没有改变M"
915+
"L, M # 改变 L,但没有改变 M"
912916
]
913917
},
914918
{
@@ -938,7 +942,7 @@
938942
"cell_type": "markdown",
939943
"metadata": {},
940944
"source": [
941-
"## 变量命名规则 \n",
945+
"## 1.6 变量命名规则 \n",
942946
"**语法:**(下划线或字母)+(任意数目的字母、数字或下划线) \n",
943947
"**区分大小写** \n",
944948
"**禁止使用保留字** "
@@ -954,15 +958,15 @@
954958
"- 以两下划线开头、但结尾没有两个下划线的变量名(`__X`)是类的本地(“压缩”)变量。\n",
955959
"- 通过交互模式运行时,只有单个下划线的变量名(`_`)会保存最后表达式的结果。\n",
956960
"\n",
957-
"Python程序员通常会遵循各种其他惯例,例如类变量名通常以一个大写字母开头,而模块变量名以小写字母开头。"
961+
"Python 程序员通常会遵循各种其他惯例,例如类变量名通常以一个大写字母开头,而模块变量名以小写字母开头。"
958962
]
959963
},
960964
{
961965
"cell_type": "markdown",
962966
"metadata": {},
963967
"source": [
964-
"# 表达式语句 \n",
965-
"在Python中,可以使用表达式作为语句(本身只占一行)。 \n",
968+
"# 2. 表达式语句 \n",
969+
"在 Python 中,可以使用表达式作为语句(本身只占一行)。 \n",
966970
"表达式结果不会存储,只有当表达式工作并作为附加的效果,这样才有意义。 \n",
967971
"\n",
968972
"通常在两种情况下表达式用作语句:\n",
@@ -974,22 +978,22 @@
974978
"cell_type": "markdown",
975979
"metadata": {},
976980
"source": [
977-
"**常见Python表达式语句**\n",
981+
"**常见 Python 表达式语句**\n",
978982
"\n",
979983
"**运算**|**解释**\n",
980984
":-------|:------\n",
981985
"`spam(eggs, ham)`|函数调用\n",
982986
"`spam.ham(eggs)`|方法调用\n",
983987
"`spam`|在交互模式解释器内打印变量\n",
984-
"`print(a, b, c, sep='')`|Python 3.X中的打印操作\n",
988+
"`print(a, b, c, sep='')`|Python 3.X \"中的打印操作\n",
985989
"`yield x ** 2`|产生表达式的语句"
986990
]
987991
},
988992
{
989993
"cell_type": "markdown",
990994
"metadata": {},
991995
"source": [
992-
"## 表达式语句和在原处的修改 \n",
996+
"## 2.1 表达式语句和在原处的修改 \n",
993997
"表达式语句通常用于执行可于原处修改列表的列表方法:"
994998
]
995999
},
@@ -1044,16 +1048,16 @@
10441048
"cell_type": "markdown",
10451049
"metadata": {},
10461050
"source": [
1047-
"# 打印操作 \n",
1051+
"# 3. 打印操作 \n",
10481052
"打印是把一个或多个对象转换为其文本表达形式,然后发送给标准输出或另一个类似文件的流。 "
10491053
]
10501054
},
10511055
{
10521056
"cell_type": "markdown",
10531057
"metadata": {},
10541058
"source": [
1055-
"## print函数 \n",
1056-
"print内置函数通常在其自身的一行中调用,但是它不会返回我们所关心的任何值(返回None)。 \n",
1059+
"## 3.1 print 函数 \n",
1060+
"print 内置函数通常在其自身的一行中调用,但是它不会返回我们所关心的任何值(返回 None)。 \n",
10571061
"\n",
10581062
"**调用格式** \n",
10591063
"`print([object, ...][, sep=' '][, end='\\n'][, file=sys.stdout][, flush=False])` \n",
@@ -1108,6 +1112,7 @@
11081112
"metadata": {},
11091113
"source": [
11101114
"print 中不需要把对象转换为字符串,而在文件写入方法中则需要这么做。 \n",
1115+
"\n",
11111116
"默认情况下,print 在打印的对象之间添加一个空格。给 sep 关键字参数发送一个空字符串,或者自己所选择的替代分隔符,以取消空格。"
11121117
]
11131118
},
@@ -1125,7 +1130,7 @@
11251130
}
11261131
],
11271132
"source": [
1128-
"print(x, y, z, sep='')"
1133+
"print(x, y, z, sep='') # 抑制分隔符"
11291134
]
11301135
},
11311136
{
@@ -1142,7 +1147,7 @@
11421147
}
11431148
],
11441149
"source": [
1145-
"print(x, y, z, sep=',')"
1150+
"print(x, y, z, sep=',') # 自定义分隔符"
11461151
]
11471152
},
11481153
{
@@ -1166,7 +1171,7 @@
11661171
}
11671172
],
11681173
"source": [
1169-
"print(x, y, z, end='')"
1174+
"print(x, y, z, end='') # 抑制行终止符"
11701175
]
11711176
},
11721177
{
@@ -1200,7 +1205,7 @@
12001205
}
12011206
],
12021207
"source": [
1203-
"print(x, y, z, end='...\\n')"
1208+
"print(x, y, z, end='...\\n') # 自定义行终止符"
12041209
]
12051210
},
12061211
{
@@ -1224,7 +1229,7 @@
12241229
}
12251230
],
12261231
"source": [
1227-
"print(x, y, z, sep='...', end='!\\n')"
1232+
"print(x, y, z, sep='...', end='!\\n') # 多个关键字"
12281233
]
12291234
},
12301235
{
@@ -1277,7 +1282,7 @@
12771282
}
12781283
],
12791284
"source": [
1280-
"print(open('data.txt').read()) # 打印文件内容"
1285+
"print(open('data.txt').read()) # 显示文件文本"
12811286
]
12821287
},
12831288
{
@@ -1326,7 +1331,7 @@
13261331
"cell_type": "markdown",
13271332
"metadata": {},
13281333
"source": [
1329-
"## 打印流重定向 \n",
1334+
"## 3.2 打印流重定向 \n",
13301335
"**重定向输出流** \n",
13311336
"`print(X, Y)` \n",
13321337
"等价于: \n",
@@ -1366,7 +1371,9 @@
13661371
"metadata": {},
13671372
"source": [
13681373
"重设 sys.stdout 后,程序中任何地方的 print 语句都会讲文字写至文件 log.txt 的末尾,而不是原始的输出流。 \n",
1374+
"\n",
13691375
"进程中只有一个 sys 模块,通过这种方式赋值 sys.stdout 会把程序中任何地方的每个 print 都进行重定向。 \n",
1376+
"\n",
13701377
"甚至可以将 sys.stdout 重设为非文件的对象,只要该对象有 write 方法。当该对象是类时,打印的文字可以定位并通过任意方式进行处理。 "
13711378
]
13721379
},
@@ -1376,6 +1383,7 @@
13761383
"source": [
13771384
"**自动化流重定向** \n",
13781385
"通过赋值 sys.stdout 而将打印文字重定向的技巧实际上非常常用。但是有一个潜在的问题,就是没有直接的方式可以保存原始的输出流,在打印至文件后,可以切换回来。 \n",
1386+
"\n",
13791387
"在 Python 3.X 中,file 关键字允许一个单个的 print 调用将其文本发送给一个文件的 write 方法,而不用真正地重设 sys.stdout。因为这种重定向是暂时的,普通的 print 语句还是会继续打印到原始的输出流。"
13801388
]
13811389
},
@@ -1386,8 +1394,8 @@
13861394
"outputs": [],
13871395
"source": [
13881396
"log = open('log.txt', 'a')\n",
1389-
"print(x, y, z, file=log)\n",
1390-
"print(x, y, z)"
1397+
"print(x, y, z, file=log) # 打印到文件对象\n",
1398+
"print(x, y, z) # 打印到原始输出流"
13911399
]
13921400
},
13931401
{
@@ -1449,7 +1457,7 @@
14491457
"name": "python",
14501458
"nbconvert_exporter": "python",
14511459
"pygments_lexer": "ipython3",
1452-
"version": "3.6.6"
1460+
"version": "3.6.5"
14531461
}
14541462
},
14551463
"nbformat": 4,

0 commit comments

Comments
 (0)