Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /