Skip to content

Commit 8e74dd4

Browse files
committed
修正了文档中的笔误
1 parent 48a00f2 commit 8e74dd4

13 files changed

+118
-67
lines changed

Day01-20/08.常用数据结构之列表-1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ print(f'6点出现了{f6}次')
4343

4444
### 创建列表
4545

46-
在 Python 中,**列表是由一系元素按特定顺序构成的数据序列**,这就意味着如果我们定义一个列表类型的变量,**可以用它来保存多个数据**。在 Python 中,可以使用`[]`字面量语法来定义列表,列表中的多个元素用逗号进行分隔,代码如下所示。
46+
在 Python 中,**列表是由一系列元素按特定顺序构成的数据序列**,这就意味着如果我们定义一个列表类型的变量,**可以用它来保存多个数据**。在 Python 中,可以使用`[]`字面量语法来定义列表,列表中的多个元素用逗号进行分隔,代码如下所示。
4747

4848
```python
4949
items1 = [35, 12, 99, 68, 55, 35, 87]

Day01-20/10.常用数据结构之元组.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ print(t1[2]) # 98
2626
print(t2[-1]) # 四川成都
2727

2828
# 切片运算
29-
print(t2[:2]) # ('骆昊', 43)
29+
print(t2[:2]) # ('骆昊', 45)
3030
print(t2[::3]) # ('骆昊', '四川成都')
3131

3232
# 循环遍历元组中的元素
@@ -40,7 +40,7 @@ print('Hao' not in t2) # True
4040

4141
# 拼接运算
4242
t3 = t1 + t2
43-
print(t3) # (35, 12, 98, '骆昊', 43, True, '四川成都')
43+
print(t3) # (35, 12, 98, '骆昊', 45, True, '四川成都')
4444

4545
# 比较运算
4646
print(t1 == t3) # False
@@ -159,9 +159,9 @@ a, b, c = b, c, a
159159
当然,Python 中的元组和列表类型是可以相互转换的,我们可以通过下面的代码来完成该操作。
160160

161161
```python
162-
infos = ('骆昊', 43, True, '四川成都')
162+
infos = ('骆昊', 45, True, '四川成都')
163163
# 将元组转换成列表
164-
print(list(infos)) # ['骆昊', 43, True, '四川成都']
164+
print(list(infos)) # ['骆昊', 45, True, '四川成都']
165165

166166
frts = ['apple', 'banana', 'orange']
167167
# 将列表转换成元组

Day01-20/16.函数使用进阶.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ print(calc(0, add, 1, 2, 3, 4, 5)) # 15
5151
print(calc(1, mul, 1, 2, 3, 4, 5)) # 120
5252
```
5353

54-
上面的`calc`函数通过将运算符变成函数的参数,实现了跟加法运算耦合,这是一种非常高明和实用的编程技巧,但对于最初学者来说可能会觉得难以理解,建议大家细品一下。需要注意上面的代码中,将函数作为参数传入其他函数和直接调用函数是有显著的区别的,**调用函数需要在函数名后面跟上圆括号,而把函数作为参数时只需要函数名即可**
54+
上面的`calc`函数通过将运算符变成函数的参数,实现了跟加法运算的解耦合,这是一种非常高明和实用的编程技巧,但对于最初学者来说可能会觉得难以理解,建议大家细品一下。需要注意上面的代码中,将函数作为参数传入其他函数和直接调用函数是有显著的区别的,调用函数需要在函数名后面跟上圆括号,而把函数作为参数时只需要函数名即可**
5555

5656
如果我们没有提前定义好`add``mul`函数,也可以使用 Python 标准库中的`operator`模块提供的`add``mul`函数,它们分别代表了做加法和做乘法的二元运算,我们拿过来直接使用即可,代码如下所示。
5757

Day01-20/17.函数高级应用.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### 装饰器
66

7-
Python 语言中,装饰器是“**用一个函数装饰另外一个函数并为其提供额外的能力**”的语法现象。装饰器本身是一个函数,它的参数是被装饰的函数,它的返回值是一个带有装饰功能的函数。通过前面的描述,相信大家已经听出来了,装饰器是一个高阶函数,它的参数和返回值都是函数。但是,装饰器的概念对编程语言的初学者来说,还是让人头疼的,下面我们先通过一个简单的例子来说明装饰器的作用。假设有名为`downlaod``upload`的两个函数,分别用于文件的上传和下载,如下所示。
7+
Python 语言中,装饰器是“**用一个函数装饰另外一个函数并为其提供额外的能力**”的语法现象。装饰器本身是一个函数,它的参数是被装饰的函数,它的返回值是一个带有装饰功能的函数。通过前面的描述,相信大家已经听出来了,装饰器是一个高阶函数,它的参数和返回值都是函数。但是,装饰器的概念对编程语言的初学者来说,还是让人头疼的,下面我们先通过一个简单的例子来说明装饰器的作用。假设有名为`downlaod``upload`的两个函数,分别用于文件的下载和上传,如下所示。
88

99
```python
1010
import random
@@ -92,7 +92,7 @@ download('MySQL从删库到跑路.avi')
9292
upload('Python从入门到住院.pdf')
9393
```
9494

95-
在 Python 中,使用装饰器很有更为便捷的**语法糖**(编程语言中添加的某种语法,这种语法对语言的功能没有影响,但是使用更加方法,代码的可读性也更强,我们将其称之为“语法糖”或“糖衣语法”),可以用`@装饰器函数`将装饰器函数直接放在被装饰的函数上,效果跟上面的代码相同。我们把完整的代码为大家罗列出来,大家可以再看看我们是如何定义和使用装饰器的。
95+
在 Python 中,使用装饰器还有更为便捷的**语法糖**(编程语言中添加的某种语法,这种语法对语言的功能没有影响,但是使用更加便捷,代码的可读性也更强,我们将其称之为“语法糖”或“糖衣语法”),可以用`@装饰器函数`将装饰器函数直接放在被装饰的函数上,效果跟上面的代码相同。我们把完整的代码为大家罗列出来,大家可以再看看我们是如何定义和使用装饰器的。
9696

9797
```python
9898
import random

Day01-20/19.面向对象编程进阶.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,14 @@ class Triangle(object):
9292
"""计算面积"""
9393
p = self.perimeter() / 2
9494
return (p * (p - self.a) * (p - self.b) * (p - self.c)) ** 0.5
95+
96+
97+
if Triangle.is_valid(3, 4, 5):
98+
t = Triangle(3, 4, 5)
99+
print(f'周长: {t.perimeter()}')
100+
print(f'面积: {t.area()}')
101+
else:
102+
print('无效的边长!!!')
95103
```
96104

97105
上面的代码使用`staticmethod`装饰器声明了`is_valid`方法是`Triangle`类的静态方法,如果要声明类方法,可以使用`classmethod`装饰器(如上面的代码15~18行所示)。可以直接使用`类名.方法名`的方式来调用静态方法和类方法,二者的区别在于,类方法的第一个参数是类对象本身,而静态方法则没有这个参数。简单的总结一下,**对象方法、类方法、静态方法都可以通过“类名.方法名”的方式来调用,区别在于方法的第一个参数到底是普通对象还是类对象,还是没有接受消息的对象**。静态方法通常也可以直接写成一个独立的函数,因为它并没有跟特定的对象绑定。
@@ -125,9 +133,12 @@ class Triangle(object):
125133
return (p * (p - self.a) * (p - self.b) * (p - self.c)) ** 0.5
126134

127135

128-
t = Triangle(3, 4, 5)
129-
print(f'周长: {t.perimeter}')
130-
print(f'面积: {t.area}')
136+
if Triangle.is_valid(3, 4, 5):
137+
t = Triangle(3, 4, 5)
138+
print(f'周长: {t.perimeter}')
139+
print(f'面积: {t.area}')
140+
else:
141+
print('无效的边长!!!')
131142
```
132143

133144
### 继承和多态

0 commit comments

Comments
 (0)