37:复习符号
现在该复习你学过的符号和python关键字了,而且你在本节还会学到一些新的东西。我在这里所作的是将所有的Python符号和关键字列出来,这些都是值得掌握的重点。
在这节课中,你需要复习每一个关键字,回想它的作用并且写下来,接着上网搜索它真正的功能。有些内容可能是难以搜索的,所以这对你可能有些难度,不过无论如何,你都要尝试一下。
如果你发现记忆中的内容有误,就在索引卡片上写下正确的定义,试着将自己的记忆纠正过来。
最后,将每一种符号和关键字用在程序里,你可以用一个小程序来做,也可以尽量多写一些程序来巩固记忆。这里的关键点是明白各个符号的作用,确认自己没搞错,如果搞错了就纠正过来,然后将其用在程序里,并且通过这样的方式加深自己的记忆。
关键字
KEYWORD | DESCRIPTION | EXAMPLE |
---|---|---|
and |
逻辑与 | True and False == False |
as |
with-as 语句的一部分 |
with X as Y: pass |
assert |
声明 | assert False, "Error!" |
break |
停止整个循环 | while True: break |
class |
定义一个类 | class Person(object) |
continue |
停止这一次循环,但继续下一次循环 | while True: continuev |
def |
定义一个函数 | def X(): pass |
del |
从字典中删除 | del X[Y] |
elif |
Else if 条件 | if: X; elif: Y; else: J |
else |
Else 条件 | if: X; elif: Y; else: J |
except |
如果捕获异常,执行该代码块 | except ValueError, e: print e |
exec |
将字符串作为Python代码执行 | exec 'print "hello"' |
finally |
不管是否有异常,finally代码块都执行 | finally: pass |
for |
for循环 | for X in Y: pass |
from |
从某一模块中引入特定部分 | import X from Y |
global |
定义一个全局变量 | global X |
if |
If 条件 | if: X; elif: Y; else: J |
import |
引入一个模块到当前模块 | import os |
in |
for循环的一部分/ 测试X in Y . |
for X in Y: pass / 1 in [1] == True |
is |
类似== ,判断相等 |
1 is 1 == True |
lambda |
创建一个无名函数 | s = lambda y: y ** y; s(3) |
not |
逻辑非 | not True == False |
or |
逻辑或 | True or False == True |
pass |
该代码块为空 | def empty(): pass |
print |
打印一个字符串 | print 'this string' |
raise |
代码出错时,抛出一个异常 | raise ValueError("No") |
return |
退出函数并返回一个返回值 | def X(): return Y |
try |
尝试代签代码块,有异常则进入except代码块 | try: pass |
while |
While循环 | while X: pass |
with |
一个变量的别名 | with X as Y: pass |
yield |
暂停, 返回给调用者 | def X(): yield Y; X().next() |
数据类型
针对每一种数据类型,都举出一些例子来,例如针对string,你可以举出一些字符串,针对 number,你可以举出一些数字。
TYPE | DESCRIPTION | EXAMPLE |
---|---|---|
True |
True 布尔值. | True or False == True |
False |
False 布尔值. | False and True == False |
None |
表示 "nothing" 或者"no value". | x = None |
strings |
字符串,储存文本信息 | x = "hello" |
numbers |
储存整数 | i = 100 |
floats |
储存小数 | i = 10.389 |
lists |
储存某种东西的列表 | j = [1,2,3,4] |
dicts |
储存某些东西的键值对 | e = {'x': 1, 'y': 2} |
字符串转义序列
对于字符串转义序列,你需要在字符串中应用它们,确认自己清楚地知道它们的功能。
ESCAPE | DESCRIPTION |
---|---|
\ | 斜线 |
\' | 单引号 |
\" | 双引号 |
\a | Bell |
\b | 退格 |
\f | Formfeed |
\n | 换行 |
\r | Carriage |
\t | Tab键 |
\v | 垂直的tab |
字符串格式化
ESCAPE | DESCRIPTION | EXAMPLE |
---|---|---|
%d |
格式化整数 (不包含浮点数). | "%d" % 45 == '45' |
%i |
与%d相同 | "%i" % 45 == '45' |
%o |
8进制数字 | "%o" % 1000 == '1750' |
%u |
负数 | "%u" % -1000 == '-1000' |
%x |
小写的十六进制数字 | "%x" % 1000 == '3e8' |
%X |
大写的十六进制数字 | "%X" % 1000 == '3E8' |
%e |
小写 'e'的指数标记 | "%e" % 1000 == '1.000000e+03' |
%E |
大写 'e'的指数标记 | "%E" % 1000 == '1.000000E+03' |
%f |
浮点数 | "%f" % 10.34 == '10.340000' |
%F |
与%f相同 | "%F" % 10.34 == '10.340000' |
%g |
%f 或者 %e中较短的一个 | "%g" % 10.34 == '10.34' |
%G |
%F 或者 %E中较短的一个 | "%G" % 10.34 == '10.34' |
%c |
字符格式化 | "%c" % 34 == '"' |
%r |
类型格式化 | "%r" % int == " |
%s |
字符串格式 | "%s there" % 'hi' == 'hi there' |
%% |
表示百分号% | "%g%%" % 10.34 == '10.34%' |
操作符
有些操作符号你可能还不熟悉,不过还是一一看过去,研究一下它们的功能,如果你研究不出来也没关系,记录下来日后解决。
OPERATOR | DESCRIPTION | EXAMPLE |
---|---|---|
+ |
加 | 2 + 4 == 6 |
- |
减 | 2 - 4 == -2 |
* |
乘 | 2 * 4 == 8 |
** |
幂乘 | 2 ** 4 == 16 |
/ |
除 | 2 / 4.0 == 0.5 |
// |
整除,得到除法的商。 | 2 // 4.0 == 0.0 |
% |
模除,返回除法的余数。 | 2 % 4 == 2 |
< |
小于 | 4 < 4 == False |
> |
大于 | 4 > 4 == False |
<= |
小于等于 | 4 <= 4 == True |
>= |
大于等于 | 4 >= 4 == True |
== |
等于,比较操作对象是否相等。 | 4 == 5 == False |
!= |
不等于 | 4 != 5 == True |
<> |
不等于 | 4 <> 5 == True |
( ) |
括号 | len('hi') == 2 |
[ ] |
列表括号 | [1,3,4] |
{ } |
字典括号 | {'x': 5, 'y': 10} |
@ |
装饰符 | @classmethod |
, |
逗号 | range(0, 10) |
: |
冒号 | def X(): |
. |
Dot | self.x = 10 |
= |
赋值等于 | x = 10 |
; |
分号 | print "hi"; print "there" |
+= |
加等于 | x = 1; x += 2 |
-= |
减等于 | x = 1; x -= 2 |
*= |
乘等于 | x = 1; x *= 2 |
/= |
除等于 | x = 1; x /= 2 |
//= |
整除等于 | x = 1; x //= 2 |
%= |
模除等于 | x = 1; x %= 2 |
**= |
幂乘等于 | x = 1; x **= 2 |
花一个星期学习这些东西,如果你能提前完成就更好了。我们的目的是覆盖到所有的符号 类型,确认你已经牢牢记住它们。另外很重要的一点是这样你可以找出自己还不知道哪些 东西,为自己日后学习找到一些方向。
读代码
找一些python的代码读读试试。你可以读任何的python代码,并且可以借鉴其中的一些思想。你已经具备足够的知识去阅读代码,但是你可能还不能完全明白代码实现了什么功能。这节练习就是教给你如何用你学过的知识弄明白别人的代码。
首先,把你找到的代码打印出来,是的,你需要把它们打印出来,因为相比电脑屏幕,你的大脑和眼睛更容易看清楚纸上的内容。
接下来,通读你打印的代码,按照下面说的做一些笔记:
- 找出所有的函数,以及它们的功能。
- 每一个变量在哪里被赋予初始值。
- 代码的不同地方有没有相同名字的变量,这可能会带来隐患。
- 有没有if语句没有else代码块的,这么写对吗?
- 有没有无终止的while循环
- 标记出不管任何原因,你看不懂的代码部分。
第三步,当你做完上面内容之后,尝试给自己解释一下自己写的注释。说明这些函数是如何应用的,包含哪些变量,以及你想弄明白的其他事情。
最后,在所有难以理解的部分,逐行、逐个函数的跟踪每个变量的值。你也可以在准备一份打印的代码,在空白处写下你要跟踪的每个变量的值。
当你弄明白这段代码是做什么的之后,回到电脑上再读一遍代码,看看能不能找到一些新的东西。多找一些代码练习,直到你能不需要打印代码就能弄懂它们的功能为止。
附加题
- 弄明白“流程图”是什么,试着画几个出来
- 读代码的过程,如果发现了什么错误,尝试着改正它,并将你修改后的结果发给代码的作者。
- 另一个技巧是用
#
给你正在读的代码加注释,有时候,你的这些注释会帮到后面来读代码的人哦。
常见问题
Q: %d
和%i
有什么区别?
没有区别,只不过由于历史原因,人们更喜欢用
%d
。
Q: 我们怎么在网上搜索这些符号和关键字?
只要把“python”放在你要搜索的内容之前就可以了,比如,你想搜索
yield
,那么就输入python yield
。