Skip to content

Commit 814b7c4

Browse files
authored
Merge branch 'jackfrued:master' into master
2 parents 982ff03 + 7a798e4 commit 814b7c4

7 files changed

+17
-16
lines changed

Day01-20/03.Python语言中的变量.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
- 规则2:Python 是**大小写敏感**的编程语言,简单的说就是大写的`A`和小写的`a`是两个不同的变量,这一条其实并不算规则,而是需要大家注意的地方。
4444
- 规则3:变量名**不要跟 Python 的关键字重名****尽可能避开 Python 的保留字**。这里的关键字是指在 Python 程序中有特殊含义的单词(如:`is``if``else``for`、`while`、`True`、`False`等),保留字主要指 Python 语言内置函数、内置模块等的名字(如:`int`、`print`、`input`、`str`、`math`、`os`等)。
4545
- 惯例部分:
46-
- 惯例1变量名通常使用小写英文字母,多个单词用下划线进行连接。
46+
- 惯例1变量名通常使用**小写英文字母****多个单词用下划线进行连接**
4747
- 惯例2:受保护的变量用单个下划线开头。
4848
- 惯例3:私有的变量用两个下划线开头。
4949
@@ -96,7 +96,7 @@ print(type(d)) # <class 'bool'>
9696
- `chr()`:将整数(字符编码)转换成对应的(一个字符的)字符串。
9797
- `ord()`:将(一个字符的)字符串转换成对应的整数(字符编码)。
9898
99-
下面的例子为大家演示了Python中类型转换的操作
99+
下面的例子为大家演示了 Python 中类型转换的操作
100100
101101
```python
102102
"""
@@ -129,3 +129,4 @@ print(ord('d')) # str类型的'd'转成int,输出100
129129
### 总结
130130
131131
在 Python 程序中,我们可以**使用变量来保存数据****变量有不同的类型**,常用的类型有`int``float``str``bool`。在有需要的情况下,可以通过 Python 内置的函数对变量进行类型转换。变量是可以做运算的,这是解决很多问题的先决条件,我们会在下一课中为大家详细介绍变量的运算。
132+

Day01-20/04.Python语言中的运算符.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ print(1 > 2 or 2 == 3) # False
127127

128128
#### 例子1:华氏温度转摄氏温度
129129

130-
要求:输入华氏温度将其转换为摄氏温度,华氏温度到摄氏温度的转换公式为: $\small{C = (F - 32) / 1.8}$ 。
130+
> **要求**:输入华氏温度将其转换为摄氏温度,华氏温度到摄氏温度的转换公式为: $\small{C = (F - 32) / 1.8}$ 。
131131
132132
```python
133133
"""
@@ -161,7 +161,7 @@ print(f'{f:.1f}华氏度 = {c:.1f}摄氏度')
161161

162162
#### 例子2:计算圆的周长和面积
163163

164-
要求:输入一个圆的半径,计算出它的周长( $\small{2 \pi r}$ )和面积( $\small{\pi r^{2}}$ )。
164+
> **要求**:输入一个圆的半径($\small{r}$),计算出它的周长( $\small{2 \pi r}$ )和面积( $\small{\pi r^{2}}$ )。
165165
166166
```python
167167
"""
@@ -233,7 +233,7 @@ is_leap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
233233
print(f'{is_leap = }')
234234
```
235235

236-
> **说明**:对于格里历(Gregorian calendar),即今天我们使用的公历,判断闰年的规则是:1. 公元年份非4的倍数是平年;2. 公元年份为4的倍数但非100的倍数是闰年;3. 公元年份为400的倍数是闰年。格里历是由教皇格里高利十三世在1582年10月引入的,作为对儒略历(Julian calendar)的修改和替代,我们在输入年份时要注意这一点。上面的代码通过`%`来判断`year`是不是`4`的倍数、`100`的倍数、`400`的倍数,然后用`and``or`运算符将三个条件组装在一起,前两个条件要同时满足,第三个条件跟前两个条件的组合只需满足其中之一。
236+
> **说明**:对于格里历(Gregorian calendar),即今天我们使用的公历,判断闰年的规则是:1. 公元年份非 4 的倍数是平年;2. 公元年份为 4 的倍数但非 100 的倍数是闰年;3. 公元年份为 400 的倍数是闰年。格里历是由教皇格里高利十三世在 1582 年 10 月引入的,作为对儒略历(Julian calendar)的修改和替代,我们在输入年份时要注意这一点。上面的代码通过`%`来判断`year`是不是`4`的倍数、`100`的倍数、`400`的倍数,然后用`and``or`运算符将三个条件组装在一起,前两个条件要同时满足,第三个条件跟前两个条件的组合只需满足其中之一。
237237
238238
### 总结
239239

Day01-20/05.分支结构.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 分支结构
22

3-
迄今为止,我们写的 Python 程序都是一条一条语句按顺序向下执行的,这种代码结构叫做顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的过关条件是玩家获得1000分,那么在第一关完成后,我们要根据玩家得到的分数来决定是进入第二关,还是告诉玩家“Game Over”(游戏结束)。在这种场景下,我们的代码就会产生两个分支,而且只有一个会被执行。类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”。给大家一分钟的时间,你应该可以想到至少5个以上类似的例子,赶紧试一试吧!
3+
迄今为止,我们写的 Python 程序都是一条一条语句按顺序向下执行的,这种代码结构叫做顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的过关条件是玩家获得 1000 分,那么在第一关完成后,我们要根据玩家得到的分数来决定是进入第二关,还是告诉玩家“Game Over”(游戏结束)。在这种场景下,我们的代码就会产生两个分支,而且只有一个会被执行。类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”。给大家一分钟的时间,你应该可以想到至少 5 个以上类似的例子,赶紧试一试吧!
44

55
### 使用if和else构造分支结构
66

Day01-20/06.循环结构.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ time.sleep(1)
1515

1616
### for-in循环
1717

18-
如果明确知道循环执行的次数,我们推荐使用`for-in`循环,例如上面说的那个重复3600次的场景,我们可以用下面的代码来实现。 注意,被`for-in`循环控制的代码块也是通过缩进的方式来构造,这一点跟分支结构中构造代码块的做法是一样的。我们被`for-in`循环控制的代码块称为循环体,通常循环体中的语句会根据循环的设定被重复执行。
18+
如果明确知道循环执行的次数,我们推荐使用`for-in`循环,例如上面说的那个重复 3600 次的场景,我们可以用下面的代码来实现。 注意,被`for-in`循环控制的代码块也是通过缩进的方式来构造,这一点跟分支结构中构造代码块的做法是一样的。我们被`for-in`循环控制的代码块称为循环体,通常循环体中的语句会根据循环的设定被重复执行。
1919

2020
```python
2121
"""

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# 定义一个三元组
1111
t1 = (35, 12, 98)
1212
# 定义一个四元组
13-
t2 = ('骆昊', 43, True, '四川成都')
13+
t2 = ('骆昊', 45, True, '四川成都')
1414

1515
# 查看变量的类型
1616
print(type(t1)) # <class 'tuple'>
@@ -36,7 +36,7 @@ for elem in t1:
3636
# 成员运算
3737
print(12 in t1) # True
3838
print(99 in t1) # False
39-
print('Hao' not in t2) # False
39+
print('Hao' not in t2) # True
4040

4141
# 拼接运算
4242
t3 = t1 + t2

Day31-35/31.Python语言进阶.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -1272,7 +1272,7 @@ Python中实现并发编程的三种方案:多线程、多进程和异步I/O
12721272
> 2. 程序的输入可以并行的分成块,并且可以将运算结果合并。
12731273
> 3. 程序在内存使用方面没有任何限制且不强依赖于I/O操作(如:读写文件、套接字等)。
12741274
1275-
- 异步处理:从调度程序的任务队列中挑选任务,该调度程序以交叉的形式执行这些任务,我们并不能保证任务将以某种顺序去执行,因为执行顺序取决于队列中的一项任务是否愿意将CPU处理时间让位给另一项任务。异步任务通常通过多任务协作处理的方式来实现,由于执行时间和顺序的不确定,因此需要通过回调式编程或者`future`对象来获取任务执行的结果。Python 3通过`asyncio`模块和`await``async`关键字(在Python 3.7中正式被列为关键字)来支持异步处理。
1275+
- 异步处理:从调度程序的任务队列中挑选任务,该调度程序以交叉的形式执行这些任务,我们并不能保证任务将以某种顺序去执行,因为执行顺序取决于队列中的一项任务是否愿意将 CPU 处理时间让位给另一项任务。异步任务通常通过多任务协作处理的方式来实现,由于执行时间和顺序的不确定,因此需要通过回调式编程或者`future`对象来获取任务执行的结果。Python 3 通过`asyncio`模块和`await``async`关键字(在 Python 3.7 中正式被列为关键字)来支持异步处理。
12761276

12771277
```Python
12781278
"""
@@ -1329,7 +1329,7 @@ Python中实现并发编程的三种方案:多线程、多进程和异步I/O
13291329

13301330
> **说明**:上面的代码使用`get_event_loop`函数获得系统默认的事件循环,通过`gather`函数可以获得一个`future`对象,`future`对象的`add_done_callback`可以添加执行完成时的回调函数,`loop`对象的`run_until_complete`方法可以等待通过`future`对象获得协程执行结果。
13311331
1332-
Python中有一个名为`aiohttp`的三方库,它提供了异步的HTTP客户端和服务器,这个三方库可以跟`asyncio`模块一起工作,并提供了对`Future`对象的支持。Python 3.6中引入了`async``await`来定义异步执行的函数以及创建异步上下文,在Python 3.7中它们正式成为了关键字。下面的代码异步的从5个URL中获取页面并通过正则表达式的命名捕获组提取了网站的标题。
1332+
Python 中有一个名为`aiohttp`的三方库,它提供了异步的 HTTP 客户端和服务器,这个三方库可以跟`asyncio`模块一起工作,并提供了对`Future`对象的支持。Python 3.6中引入了`async``await`来定义异步执行的函数以及创建异步上下文,在 Python 3.7 中它们正式成为了关键字。下面的代码异步的从5个URL中获取页面并通过正则表达式的命名捕获组提取了网站的标题。
13331333

13341334
```Python
13351335
import asyncio
@@ -1369,8 +1369,8 @@ Python中实现并发编程的三种方案:多线程、多进程和异步I/O
13691369

13701370
> **重点****异步I/O与多进程的比较**
13711371
>
1372-
> 当程序不需要真正的并发性或并行性,而是更多的依赖于异步处理和回调时,`asyncio`就是一种很好的选择。如果程序中有大量的等待与休眠时,也应该考虑`asyncio`它很适合编写没有实时数据处理需求的Web应用服务器
1372+
> 当程序不需要真正的并发性或并行性,而是更多的依赖于异步处理和回调时,`asyncio`就是一种很好的选择。如果程序中有大量的等待与休眠时,也应该考虑`asyncio`它很适合编写没有实时数据处理需求的 Web 应用服务器
13731373
1374-
Python还有很多用于处理并行任务的三方库,例如:`joblib``PyMP`等。实际开发中,要提升系统的可扩展性和并发性通常有垂直扩展(增加单个节点的处理能力)和水平扩展(将单个节点变成多个节点)两种做法。可以通过消息队列来实现应用程序的解耦合,消息队列相当于是多线程同步队列的扩展版本,不同机器上的应用程序相当于就是线程,而共享的分布式消息队列就是原来程序中的Queue。消息队列(面向消息的中间件)的最流行和最标准化的实现是AMQP(高级消息队列协议),AMQP源于金融行业,提供了排队、路由、可靠传输、安全等功能,最著名的实现包括:Apache的ActiveMQ、RabbitMQ等
1374+
Python 还有很多用于处理并行任务的三方库,例如:`joblib``PyMP`等。实际开发中,要提升系统的可扩展性和并发性通常有垂直扩展(增加单个节点的处理能力)和水平扩展(将单个节点变成多个节点)两种做法。可以通过消息队列来实现应用程序的解耦合,消息队列相当于是多线程同步队列的扩展版本,不同机器上的应用程序相当于就是线程,而共享的分布式消息队列就是原来程序中的Queue。消息队列(面向消息的中间件)的最流行和最标准化的实现是 AMQP(高级消息队列协议),AMQP 源于金融行业,提供了排队、路由、可靠传输、安全等功能,最著名的实现包括:Apache 的 ActiveMQ、RabbitMQ 等
13751375

1376-
要实现任务的异步化,可以使用名为`Celery`的三方库。`Celery`是Python编写的分布式任务队列,它使用分布式消息进行工作,可以基于RabbitMQ或Redis来作为后端的消息代理
1376+
要实现任务的异步化,可以使用名为`Celery`的三方库。`Celery`是 Python 编写的分布式任务队列,它使用分布式消息进行工作,可以基于 RabbitMQ 或 Redis 来作为后端的消息代理

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
> **作者**:骆昊
44
>
5-
> **说明**:如果访问 GitHub 比较慢的话,可以关注我的知乎号([**Python-Jack**](https://www.zhihu.com/people/jackfrued)),上面的[“**从零开始学Python**”](<https://zhuanlan.zhihu.com/c_1216656665569013760>)专栏(对应本项目前 20 天的内容)比较适合初学者,其他的专栏如“[**数据思维和统计思维**](https://www.zhihu.com/column/c_1620074540456964096)”、“[**基于Python的数据分析**](https://www.zhihu.com/column/c_1217746527315496960)”、“[**说走就走的AI之旅**](https://www.zhihu.com/column/c_1628900668109946880)”等也在持续创作和更新中,欢迎大家关注、点赞和评论。如果希望结伴学习或者讨论问题,可以加入下面的 QQ 交流群(三个群加一个即可),请不要重复加群,也不要在群里发布广告和其他色情、低俗或敏感内容。如果遇到解决不了的问题,可以添加我的私人微信(微信号:**jackfrued**),备注好自己的称呼和需求,我会为大家提供力所能及的帮助。
5+
> **说明**:如果访问 GitHub 比较慢的话,可以关注我的知乎号([**Python-Jack**](https://www.zhihu.com/people/jackfrued)),上面的[“**从零开始学Python**”](<https://zhuanlan.zhihu.com/c_1216656665569013760>)专栏(对应本项目前 20 天的内容)比较适合初学者,其他的专栏如“[**数据思维和统计思维**](https://www.zhihu.com/column/c_1620074540456964096)”、“[**基于Python的数据分析**](https://www.zhihu.com/column/c_1217746527315496960)”、“[**说走就走的AI之旅**](https://www.zhihu.com/column/c_1628900668109946880)”等也在持续创作和更新中,欢迎大家关注、点赞和评论。如果希望免费学习打卡或者参与问题讨论,可以加入下面的 QQ 交流群(三个群加一个即可),请不要重复加群,也不要在群里发布广告和其他色情、低俗或敏感内容。如果有付费学习或付费咨询的需求,可以添加我的私人微信(微信号:**jackfrued**),备注好自己的称呼和需求,我会为大家提供力所能及的帮助。
66
>
77
> <img src="res/python_study_qq_group.png" style="zoom:30%;">
88
>
9-
> 本项目对应的部分视频在B站(账号:[**骆昊jackfrued**](https://space.bilibili.com/1177252794))可以找到,有兴趣的小伙伴可以关注一下,刚刚起号还希望大家多多支持
9+
> 本项目对应的部分视频已经同步到 [Bilibili](https://space.bilibili.com/1177252794),有兴趣的小伙伴可以点赞、投币、关注,一键三连支持一下
1010
1111
### Python应用领域和职业发展分析
1212

0 commit comments

Comments
 (0)