diff --git a/README.md b/README.md
index 1ebb3c2..9c8c739 100644
--- a/README.md
+++ b/README.md
@@ -14,14 +14,4 @@
151.101.184.133 camo.githubusercontent.com
```
-
图1. 公开课信息
-
-![](res/open-course.png)
-
-图2. 扫码加入公开课
-
-![](res/qrcode.png)
-
-图3. 学习交流群信息
-
![](res/qrcode-group.png)
diff --git a/第016课:面向对象编程入门.md b/第016课:面向对象编程入门.md
index 9d8cb47..7c0c401 100644
--- a/第016课:面向对象编程入门.md
+++ b/第016课:面向对象编程入门.md
@@ -131,8 +131,6 @@ print(students) # [骆昊: 40, 王小锤: 16, 王大锤: 25]
```
-
-
### 面向对象的支柱
面向对象编程有三大支柱,就是我们之前给大家划重点的时候圈出的三个词:封装、继承和多态。后面两个概念在下一节课中会详细说明,这里我们先说一下什么是封装。我自己对封装的理解是:**隐藏一切可以隐藏的实现细节,只向外界暴露简单的调用接口**。我们在类中定义的对象方法其实就是一种封装,这种封装可以让我们在创建对象之后,只需要给对象发送一个消息就可以执行方法中的代码,也就是说我们在只知道方法的名字和参数(方法的外部视图),不知道方法内部实现细节(方法的内部视图)的情况下就完成了对方法的使用。
diff --git a/第020课:函数使用进阶.md b/第020课:函数使用进阶.md
index 5b79944..c158f90 100644
--- a/第020课:函数使用进阶.md
+++ b/第020课:函数使用进阶.md
@@ -79,7 +79,7 @@ print(calc(1, 2, c=3, d=4)) # 10
如果我们希望上面的`calc`函数不仅仅可以做多个参数求和,还可以做多个参数求乘积甚至更多的二元运算,我们就可以使用高阶函数的方式来改写上面的代码,将加法运算从函数中移除掉,具体的做法如下所示。
```Python
-def calc(*, init_value, op, *args, **kwargs):
+def calc(*args, init_value, op, **kwargs):
result = init_value
for arg in args:
result = op(result, arg)
@@ -99,8 +99,8 @@ def mul(x, y):
return x * y
-print(calc(init_value=0, op=add, 1, 2, 3, x=4, y=5)) # 15
-print(calc(init_value=1, op=mul, 1, 2, x=3, y=4, z=5)) # 120
+print(calc(1, 2, 3, init_value=0, op=add, x=4, y=5)) # 15
+print(calc(1, 2, x=3, y=4, z=5, init_value=1, op=mul)) # 120
```
通过对高阶函数的运用,`calc`函数不再和加法运算耦合,所以灵活性和通用性会变强,这是编程中一种常用的技巧,但是最初学者来说可能会稍微有点难以理解。需要注意的是,将函数作为参数和调用函数是有显著的区别的,**调用函数需要在函数名后面跟上圆括号,而把函数作为参数时只需要函数名即可**。上面的代码也可以不用定义`add`和`mul`函数,因为Python标准库中的`operator`模块提供了代表加法运算的`add`和代表乘法运算的`mul`函数,我们直接使用即可,代码如下所示。