Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull From Source #1

Open
wants to merge 313 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
313 commits
Select commit Hold shift + click to select a range
4d9f270
修改了数据库部分的代码和文档
jackfrued Dec 26, 2018
ea9adc6
更新了部分文档
jackfrued Jan 24, 2019
62d43af
更新了文档和静态资源
jackfrued Jan 24, 2019
199eb00
Update 图形用户界面和游戏开发.md
TinaryTree Jan 29, 2019
20c9315
更新了文档和目录结构
jackfrued Feb 12, 2019
4bbbed0
Update Python语言进阶.md
jackfrued Feb 12, 2019
74c92de
Update Python语言进阶.md
jackfrued Feb 12, 2019
8c75922
更新了部分文档
jackfrued Feb 15, 2019
4611a38
补上Selenium官网地址 https://www.seleniumhq.org
royaso Feb 20, 2019
283c8fd
更新了部分文档
jackfrued Feb 23, 2019
340b91b
修改了部分文档
jackfrued Mar 4, 2019
9ff9250
更新了数据库和电商项目文档
jackfrued Mar 10, 2019
b8a0a6c
更新了部分文档
jackfrued Mar 20, 2019
3b2ddfd
更新了项目部分的文档
jackfrued Mar 21, 2019
706fc18
更新了测试和知乎问答
jackfrued Mar 24, 2019
92cd26b
添加了Vue.js相关的内容
jackfrued Mar 28, 2019
7275b75
更新了前端文档和代码目录结构
jackfrued Mar 31, 2019
2488679
添加了资源图片
jackfrued Apr 2, 2019
748dbdd
更新了前端相关资源
jackfrued Apr 3, 2019
74bcfe5
Update requirements.txt
jackfrued Apr 3, 2019
33b6062
Update requirements.txt
jackfrued Apr 3, 2019
62368f5
更新了前端相关文档
jackfrued Apr 4, 2019
a8d0b82
Merge branch 'master' of github.com:jackfrued/Python-100-Days
jackfrued Apr 4, 2019
f63d566
更新了前端文档
jackfrued Apr 7, 2019
1b9aefe
修改了部分文档
jackfrued Apr 14, 2019
02d3171
更新了部分代码和文档
jackfrued Apr 23, 2019
66fb888
更新了数据库部分相关知识
jackfrued Apr 26, 2019
400cc99
修改了部分文档
jackfrued Apr 26, 2019
1721259
调整了部分目录结构
jackfrued Apr 26, 2019
736c7f4
调整了部分目录结构
jackfrued Apr 26, 2019
5f5ebe4
更新了数据库部分的相关文档
jackfrued Apr 27, 2019
6ed9e60
更新了Django部分的文档
jackfrued May 2, 2019
1f67d39
更新了数据库部分的文档
jackfrued May 3, 2019
b720eb3
添加了Tornado相关的文档和代码
jackfrued May 3, 2019
28067bf
更新了README.md
jackfrued May 3, 2019
6411875
更正了部分文档和代码
jackfrued May 3, 2019
bd20a91
修正了文档上的部分bug
jackfrued May 3, 2019
783b3f6
更新了README.md
jackfrued May 3, 2019
ff4912b
修正了缩进的问题
jackfrued May 3, 2019
155cad5
Merge pull request #27 from royaso/patch-2
jackfrued May 4, 2019
d4b6a8a
Merge pull request #25 from q526933815/master
jackfrued May 4, 2019
cfc872e
更新了第15天的文档
jackfrued May 4, 2019
2c1991c
更新了Django部分的文档
jackfrued May 6, 2019
bef6a30
更正了部分文档中的bug
jackfrued May 6, 2019
d8240c6
补充sublime text 手动下载package control插件说明
May 7, 2019
93833ed
Update 初识Python.md
wjsvec May 7, 2019
659f2cc
Update 初识Python.md
LingrenKong May 7, 2019
bdf2bd5
Merge pull request #58 from LingrenKong/patch-1
jackfrued May 8, 2019
bd39f99
Merge pull request #55 from wjsvec/patch-1
jackfrued May 8, 2019
72496cb
fix doc error
geekya215 May 9, 2019
0d2f070
更新了Django部分的文档
jackfrued May 9, 2019
8913e0d
add description for formula img
geekya215 May 12, 2019
0863b1f
Add Gitpod to 初识Python.md
jankeromnes May 14, 2019
6b0c4c7
Change name: string.py to strings.py
nasyxx May 14, 2019
4dde381
更新了部分文档和数据库代码
jackfrued May 15, 2019
9b73218
ceshiq
softpo May 16, 2019
aa35977
'ceshichenggong'
softpo May 16, 2019
43c147d
'pandas使用'
softpo May 16, 2019
59431d3
Update 关系型数据库MySQL.md
leemamas May 16, 2019
aca4779
修正定义类示例代码
May 17, 2019
9e36049
Merge pull request #125 from amath0312/master
jackfrued May 18, 2019
2f013d1
Merge pull request #119 from leemamas/master
jackfrued May 18, 2019
841172c
Merge pull request #101 from nasyxx/patch-1
jackfrued May 18, 2019
7794d98
Merge pull request #99 from jankeromnes/master
jackfrued May 18, 2019
7e02cb3
Merge pull request #70 from Geekya215/master
jackfrued May 18, 2019
6ecd5ca
Merge pull request #54 from xiaoer371/master
jackfrued May 18, 2019
fe71d27
修复了部分文档和代码中的bug
jackfrued May 18, 2019
2768776
更新了代码和文档中的bug
jackfrued May 18, 2019
37b414d
添加了学习交流群信息
jackfrued May 20, 2019
e5af081
添加了学习交流群信息
jackfrued May 20, 2019
54edcfd
fix(docs): 修改 Day02 文档中的笔误
JalanJiang May 20, 2019
6b8aad8
Merge pull request #136 from JalanJiang/fix/day02
jackfrued May 20, 2019
76446dc
更新了文档中的bug
jackfrued May 20, 2019
76d67f3
Merge branch 'master' of github.com:jackfrued/Python-100-Days
jackfrued May 20, 2019
ce4f2cd
更新了新的交流群群号
jackfrued May 22, 2019
43aa496
更新了部分文档
jackfrued May 25, 2019
5bd10ce
更新了文档和交流群信息
jackfrued May 25, 2019
e18721d
更新了Django第5天和第6天的文档
jackfrued May 25, 2019
d8e1165
修改了README.md
jackfrued May 25, 2019
a064190
删除了不必要的资源文件更新了README.md
jackfrued May 25, 2019
8230632
更新了Django第6天的文档
jackfrued May 25, 2019
75ecfc4
更新了Linux和Django部分的文档
jackfrued May 30, 2019
2d81c7e
更新了Linux部分相关文档
jackfrued May 30, 2019
4082e1a
修改了文档中描述不准确的内容
jackfrued May 30, 2019
b74e0de
更新了部分文档补充了Linux部分的内容
jackfrued Jun 2, 2019
3ad03f0
更新了第46天的内容
jackfrued Jun 2, 2019
c6666f4
更新了数据库阶段的文档
jackfrued Jun 3, 2019
0953c5e
更新了数据库部分的文档和代码
jackfrued Jun 4, 2019
36ffd6c
修改了交流群信息
jackfrued Jun 4, 2019
6a7f860
调整了目录结构
jackfrued Jun 5, 2019
2c2513b
更新了README.md
jackfrued Jun 5, 2019
c2895d7
更新了部分文档
jackfrued Jun 5, 2019
cd529ff
更新了文档和代码
jackfrued Jun 11, 2019
da522a8
修改了交流群相关信息
jackfrued Jun 13, 2019
87de54a
更新了公开课相关资源
jackfrued Jun 13, 2019
0640abb
更新了Linux、数据库和Django部分的文档
jackfrued Jun 16, 2019
0ab0d99
更新了Django部分的文档
jackfrued Jun 18, 2019
208cd3e
更新了Django部分的文档
jackfrued Jun 18, 2019
95c73fe
修改了文档中的bug
jackfrued Jun 18, 2019
1cdc87b
更新了部分文档
jackfrued Jun 18, 2019
9203ffe
更正了文档中的部分bug
jackfrued Jun 19, 2019
7a89e21
更新了QQ群信息
jackfrued Jun 23, 2019
cc537bd
更新了部分文档
jackfrued Jun 27, 2019
ad14971
更新了部分目录结构并完成了第48天的文档和代码
jackfrued Jun 30, 2019
83eff5f
更新了公开课相关资源
jackfrued Jul 3, 2019
21bdcc2
更新了公开课相关内容
jackfrued Jul 3, 2019
b081879
开始更新语言基础部分的文档
jackfrued Jul 9, 2019
8086059
更新了部分文档和QQ群信息
jackfrued Jul 11, 2019
2f72786
更新了部分文档和QQ群信息
jackfrued Jul 11, 2019
d4574e1
更新了部分文档和QQ群信息
jackfrued Jul 11, 2019
6eb9ffc
更新了部分文档和QQ群信息
jackfrued Jul 11, 2019
0a4d03f
更新了更新日志
jackfrued Jul 12, 2019
d9ec811
更新了部分文档和QQ群信息
jackfrued Jul 20, 2019
48758e0
更新了数据库部分的文档
jackfrued Jul 23, 2019
ed6777e
更新了部分文档
jackfrued Jul 24, 2019
1e7ee31
更新了交流群信息
jackfrued Jul 26, 2019
fc98214
更新了数据库部分的文档
jackfrued Jul 28, 2019
9e7382d
更新了部分文档
jackfrued Jul 31, 2019
77e6805
更新了关系型数据库的文档
jackfrued Aug 7, 2019
49bdd30
更新了使用Hexo搭建自己的博客.md
jackfrued Aug 8, 2019
e95c43c
更新了部分文档并修正了文档中的错误
jackfrued Aug 12, 2019
5bf23a2
更新了部分文档
jackfrued Aug 12, 2019
2e18a40
更新了部分文档和代码
jackfrued Aug 18, 2019
9c478c5
更新了前端部分文档
jackfrued Aug 20, 2019
916b47f
更新了部分文档
jackfrued Sep 9, 2019
9fdd935
更新了部分文档
jackfrued Sep 14, 2019
8396987
更新了更新日志并开始着手完成Python面试题大全
jackfrued Sep 16, 2019
d8fb0b0
更新了QQ群信息
jackfrued Sep 19, 2019
c786e96
更新了部分文档
jackfrued Sep 22, 2019
2dc833f
调整了文档结构
jackfrued Sep 22, 2019
4fa36c9
更新了第7天的文档
jackfrued Sep 22, 2019
1eec25a
更新了第1天到第4天的文档
jackfrued Sep 23, 2019
8c9ae82
更新了交流群信息
jackfrued Sep 24, 2019
e9d13db
更新了第1天到第9天的文档
jackfrued Sep 25, 2019
5e712ca
更新了README.md文件
jackfrued Sep 25, 2019
8e719ca
更新了部分文档
jackfrued Sep 29, 2019
cef5d95
更新了最后10天的文档
jackfrued Oct 13, 2019
24048b2
更新了README.md文件
jackfrued Oct 13, 2019
662318e
更新了第91天的内容
jackfrued Oct 15, 2019
7847dd1
更新了第91天的文档和资源
jackfrued Oct 15, 2019
b9c18a7
更新了第92天的文档
jackfrued Oct 15, 2019
a2e0400
更新了第91天的文档
jackfrued Oct 16, 2019
9fdf387
更新了第93天的文档
jackfrued Oct 16, 2019
7817c8a
新增了《为什么我选择了Python》
jackfrued Oct 16, 2019
2dc9890
更新了第6天文档
jackfrued Oct 16, 2019
c6fe046
更新了第7天的文档
jackfrued Oct 16, 2019
ef20e51
更新了部分文档
jackfrued Oct 19, 2019
04e21dd
更新了最后10天的文档
jackfrued Oct 26, 2019
b27a53f
更新了第93天文档内容
jackfrued Oct 27, 2019
d036c5c
更新了第95天文档内容
jackfrued Oct 27, 2019
00a3941
更新了最后10天的文档
jackfrued Oct 28, 2019
ca04c92
更新了SQL代码
jackfrued Oct 30, 2019
0a20594
更新了README.md
jackfrued Nov 4, 2019
77e1b1f
更新了第41-55天内容
jackfrued Nov 13, 2019
9022d51
更新了项目部分的文档
jackfrued Nov 18, 2019
302575f
更新了项目和面试相关的文档
jackfrued Nov 24, 2019
a903d38
更新了部分文档
jackfrued Dec 4, 2019
4502900
更新了部分文档
jackfrued Dec 11, 2019
d7c42bc
更新了部分文档
jackfrued Dec 12, 2019
eb2cb5f
更新了部分文档
jackfrued Dec 18, 2019
daccf3f
更新了部分文档
jackfrued Dec 30, 2019
d77e71c
更新了部分文档
jackfrued Jan 2, 2020
b707912
更新了QQ群信息
jackfrued Jan 27, 2020
cd767cf
更新了QQ群信息
jackfrued Jan 27, 2020
63c17a0
更新了QQ群信息
jackfrued Jan 27, 2020
fe5ad86
更新了部分文档和说明
jackfrued Feb 24, 2020
406eed0
优化了图片和文档
jackfrued Feb 29, 2020
f62d51d
优化了图片和文档
jackfrued Mar 1, 2020
45a8b23
更新了Docker和项目部署文档
jackfrued Mar 5, 2020
b773c05
更新了部分文档
jackfrued Mar 9, 2020
3351f01
更新了Python语言进阶部分的内容
jackfrued Mar 15, 2020
dbe5479
更新了前15天和最后10天的内容
jackfrued Apr 1, 2020
05998c8
更新了日志
jackfrued Apr 8, 2020
a9ded25
更新了部分文档和图片资源
jackfrued Apr 26, 2020
3ef3721
更正了第19课文档
jackfrued Apr 26, 2020
60587f0
更新了部分文档和代码
jackfrued Jun 24, 2020
0460425
更新了部分文档
jackfrued Jun 26, 2020
2747427
更新了部分文档
jackfrued Jun 29, 2020
4bec755
更新了部分文档
jackfrued Jun 29, 2020
5e2fda2
更新了部分文档
jackfrued Jun 30, 2020
9624959
更新了部分文档
jackfrued Jul 12, 2020
5d55234
更新了Django部分的文档
jackfrued Jul 13, 2020
cdb7fdd
更新了Django部分的文档
jackfrued Jul 15, 2020
ab45ce5
修改了部分文档
jackfrued Jul 20, 2020
5f9b9a5
更新了部分文档
jackfrued Sep 23, 2020
2847d4f
更新了文档目录结构
jackfrued Oct 3, 2020
8a7710b
调整了目录结构,修订了部分文档
jackfrued Oct 3, 2020
6387ccb
更新了部分文档
jackfrued Oct 4, 2020
e021811
更新了Django部分的文档
jackfrued Oct 11, 2020
395d37d
更新了部分文档
jackfrued Oct 19, 2020
588bfda
更新了第52天文档
jackfrued Oct 19, 2020
913dd1c
优化了项目的图片资源
jackfrued Oct 19, 2020
d1f0857
开始更新数据分析部分内容
jackfrued Nov 30, 2020
a4355b8
更新了数据分析相关章节内容
jackfrued Dec 13, 2020
b53d58f
更正了文档中的数学公式
jackfrued Dec 17, 2020
851b16d
更正了文档中的数学公式
jackfrued Dec 17, 2020
86679bb
更正了文档中的数学公式
jackfrued Dec 17, 2020
329dbeb
更正了文档中的数学公式
jackfrued Dec 17, 2020
bdd01d5
更新了数据分析部分的文档
jackfrued Dec 20, 2020
b98c44e
更新了数据分析部分的文档
jackfrued Dec 20, 2020
e802da9
更新了数据分析部分的文档
jackfrued Dec 20, 2020
c057117
更新了数据分析部分的文档
jackfrued Dec 20, 2020
6c24ead
更新了数据分析部分的文档
jackfrued Dec 20, 2020
aa64dfc
更新了数据分析部分的文档
jackfrued Dec 20, 2020
ed49ed9
更新了数据分析部分的文档
jackfrued Dec 20, 2020
84fe683
更新了数据分析部分的文档
jackfrued Dec 20, 2020
8c4e7d2
更新了数据分析部分的文档
jackfrued Dec 20, 2020
e6934a5
更新了数据分析部分的文档
jackfrued Dec 21, 2020
abd4084
更新了数据分析部分的文档
jackfrued Dec 21, 2020
3aa9f2f
更新了数据分析部分的文档
jackfrued Dec 21, 2020
e34311d
更新了公开课相关资源
jackfrued Dec 21, 2020
5ce64ba
更新了公开课相关资源
jackfrued Dec 21, 2020
a7b48eb
更新了数据分析部分的文档和代码
jackfrued Dec 23, 2020
0d01379
更新了数据分析部分的内容
jackfrued Dec 24, 2020
4e091d9
更新了部分文档
jackfrued Mar 7, 2021
6a639f0
更新了第93天的文档
jackfrued Mar 13, 2021
7efa67b
更新了数据库部分的文档和代码
jackfrued Mar 28, 2021
6632c37
更新了部分文档
jackfrued Apr 5, 2021
5f1641c
更新了部分文档
jackfrued Apr 28, 2021
d2c6ce9
更新了第67天和第68天文档
jackfrued Apr 30, 2021
b67ed79
修改了部分文档
jackfrued May 12, 2021
1ef5bf0
更新了部分文档
jackfrued Jun 20, 2021
6f4066d
更新了部分文档
jackfrued Sep 9, 2021
2abc61c
调整目录结构+更新文档
jackfrued Oct 7, 2021
2d5c4b5
更新README.md文件
jackfrued Oct 7, 2021
08bc838
更新了数据分析部分的文档
jackfrued Nov 6, 2021
a448570
更新了部分文档
jackfrued Nov 20, 2021
311f12c
更新了部分文档
jackfrued Nov 20, 2021
9ab84aa
更正了网友们指出的错误
jackfrued Nov 20, 2021
c1af931
更新了数据库部分的文档
jackfrued May 21, 2021
5d843e0
更新了数据库部分的文档和日志
jackfrued Nov 21, 2021
24eb8e2
更新了部分文档
jackfrued Dec 7, 2021
e13f27b
新增了数据分析后续文档
jackfrued Dec 8, 2021
a259a6a
更新了日志
jackfrued Jan 11, 2022
b2d309c
更新了爬虫和数据分析部分的文档
jackfrued Mar 10, 2022
301bb83
增加了SQL案例
jackfrued Mar 31, 2022
778bfbb
更新了部分资源
jackfrued Jun 19, 2022
eb590f8
更新了第77天的文档
jackfrued Jun 19, 2022
280bad0
更新了第77天的文档
jackfrued Jun 19, 2022
3e42ffa
更新了部分资源和文档
jackfrued Feb 5, 2023
09857a5
更新了README.md
jackfrued Feb 5, 2023
4ea76ff
更新了Python数据分析部分的文档和资源文件
jackfrued Oct 30, 2023
28bfaa3
更新了抖音和B站二维码
jackfrued Jan 2, 2024
5dba374
调整了项目结构更新部分文档
jackfrued Apr 18, 2024
bffafcf
更新了README文件
jackfrued Apr 18, 2024
10a33cc
更新了README文件
jackfrued May 26, 2024
5d1fd16
修正了文档中的笔误
jackfrued May 27, 2024
143910a
更新了README文档
jackfrued May 28, 2024
180cf99
修改了README文件
jackfrued May 30, 2024
bf24146
更新了部分文档
jackfrued Aug 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .gitignore
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,14 @@ venv
*.pyc
__pycache__

### VisualStudioCode ###
.vscode/*
.vscode/**
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
258 changes: 258 additions & 0 deletions Day01-15/01.初识Python.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
## 初识Python

> **温馨提示**:2018年创建这个仓库的时候,关于Python语言基础这个部分的内容写得相对是比较粗糙,对粗学者可能不是那么友好。如果你正好是一名初学者,建议你移步到我的另一个仓库[Python-for-Freshmen-2023](https://github.com/jackfrued/Python-for-Freshmen-2023),这个仓库对初学者更加友好,对应的内容,大家也可以在我的知乎专栏“从零开始学Python”中找到,点击进入[传送门](https://www.zhihu.com/column/c_1216656665569013760)。

### Python简介

#### Python的历史

1. 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。
2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,还有对列表、字典等核心数据类型,同时支持以模块为基础来构造应用程序。
3. 1994年1月:Python 1.0正式发布。
4. 2000年10月16日:Python 2.0发布,增加了完整的[垃圾回收](https://zh.wikipedia.org/wiki/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)),提供了对[Unicode](https://zh.wikipedia.org/wiki/Unicode)的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。
5. 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。

目前我使用的Python 3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以阅读名为[《Python简史》](http://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html)的网络文章。

#### Python的优缺点

Python的优点很多,简单的可以总结为以下几点。

1. 简单明了,学习曲线低,比很多编程语言都容易上手。
2. 开放源代码,拥有强大的社区和生态圈,尤其是在数据分析和机器学习领域。
3. 解释型语言,天生具有平台可移植性,代码可以工作于不同的操作系统。
4. 对两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。
5. 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。

Python的缺点主要集中在以下几点。

1. 执行效率稍低,对执行效率要求高的部分可以由其他语言(如:C、C++)编写。
2. 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被弱化。
3. 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。

#### Python的应用领域

目前Python在Web应用后端开发、云基础设施建设、DevOps、网络数据采集(爬虫)、自动化测试、数据分析、机器学习等领域都有着广泛的应用。

### 安装Python解释器

想要开始Python编程之旅,首先得在自己使用的计算机上安装Python解释器环境,下面将以安装官方的Python解释器为例,讲解如何在不同的操作系统上安装Python环境。官方的Python解释器是用C语言实现的,也是使用最为广泛的Python解释器,通常称之为CPython。除此之外,Python解释器还有Java语言实现的Jython、C#语言实现的IronPython以及PyPy、Brython、Pyston等版本,有兴趣的读者可以自行了解。

#### Windows环境

可以在[Python官方网站](https://www.python.org)下载到Python的Windows安装程序(exe文件),需要注意的是如果在Windows 7环境下安装Python 3.x,需要先安装Service Pack 1补丁包(可以通过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.x to PATH”(将Python 3.x添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项全部勾选上。强烈建议选择自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示。如果稍后运行Python程序时,出现因为缺失一些动态链接库文件而导致Python解释器无法工作的问题,可以按照下面的方法加以解决。

如果系统显示api-ms-win-crt\*.dll文件缺失,可以参照[《api-ms-win-crt\*.dll缺失原因分析和解决方法》](<https://zhuanlan.zhihu.com/p/32087135>)一文讲解的方法进行处理或者直接在[微软官网](https://www.microsoft.com/zh-cn/download/details.aspx?id=48145)下载Visual C++ Redistributable for Visual Studio 2015文件进行修复;如果是因为更新Windows的DirectX之后导致某些动态链接库文件缺失问题,可以下载一个[DirectX修复工具](<https://dl.pconline.com.cn/download/360074-1.html>)进行修复。

#### Linux环境

Linux环境自带了Python 2.x版本,但是如果要更新到3.x的版本,可以在[Python的官方网站](https://www.python.org)下载Python的源代码并通过源代码构建安装的方式进行安装,具体的步骤如下所示(以CentOS为例)。

1. 安装依赖库(因为没有这些依赖库可能在源代码构件安装时因为缺失底层依赖库而失败)。

```Shell
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
```

2. 下载Python源代码并解压缩到指定目录。

```Shell
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
xz -d Python-3.7.6.tar.xz
tar -xvf Python-3.7.6.tar
```

3. 切换至Python源代码目录并执行下面的命令进行配置和安装。

```Shell
cd Python-3.7.6
./configure --prefix=/usr/local/python37 --enable-optimizations
make && make install
```

4. 修改用户主目录下名为.bash_profile的文件,配置PATH环境变量并使其生效。

```Shell
cd ~
vim .bash_profile
```

```Shell
# ... 此处省略上面的代码 ...

export PATH=$PATH:/usr/local/python37/bin

# ... 此处省略下面的代码 ...
```

5. 激活环境变量。

```Shell
source .bash_profile
```

#### macOS环境

macOS也自带了Python 2.x版本,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行`python`命令来启动2.x版本的Python解释器,启动3.x版本的Python解释器需要执行`python3`命令。

### 运行Python程序

#### 确认Python的版本

可以Windows的命令行提示符中键入下面的命令。

```Shell
python --version
```
在Linux或macOS系统的终端中键入下面的命令。

```Shell
python3 --version
```

当然也可以先输入`python`或`python3`进入交互式环境,再执行以下的代码检查Python的版本。

```Python
import sys

print(sys.version_info)
print(sys.version)
```

#### 编写Python源代码

可以用文本编辑工具(推荐使用[Sublime](<https://www.sublimetext.com/>)、[Visual Studio Code](<https://code.visualstudio.com/>)等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。

```Python
print('hello, world!')
```

#### 运行程序

切换到源代码所在的目录并执行下面的命令,看看屏幕上是否输出了"hello, world!"。

```Shell
python hello.py
```


```Shell
python3 hello.py
```

#### 代码中的注释

注释是编程语言的一个重要组成部分,用于在源代码中解释代码的作用从而增强程序的可读性和可维护性,当然也可以将源代码中不需要参与运行的代码段通过注释来去掉,这一点在调试程序的时候经常用到。注释在随源代码进入预处理器或编译时会被移除,不会在目标代码中保留也不会影响程序的执行结果。

1. 单行注释 - 以#和空格开头的部分
2. 多行注释 - 三个引号开头,三个引号结尾

```Python
"""
第一个Python程序 - hello, world!
向伟大的Dennis M. Ritchie先生致敬

Version: 0.1
Author: 骆昊
"""
print('hello, world!')
# print("你好, 世界!")
```

### Python开发工具

#### IDLE - 自带的集成开发工具

IDLE是安装Python环境时自带的集成开发工具,如下图所示。但是由于IDLE的用户体验并不是那么好所以很少在实际开发中被采用。

![](./res/python-idle.png)

#### IPython - 更好的交互式编程工具

IPython是一种基于Python的交互式解释器。相较于原生的Python交互式环境,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython,具体的操作如下所示。

```Shell
pip install ipython
```


```Shell
pip3 install ipython
```

安装成功后,可以通过下面的ipython命令启动IPython,如下图所示。

![](./res/python-ipython.png)

#### Sublime Text - 高级文本编辑器

![](./res/python-sublime.png)

- 首先可以通过[官方网站](https://www.sublimetext.com/)下载安装程序安装Sublime Text 3或Sublime Text 2。

- 安装包管理工具。
1. 通过快捷键Ctrl+`或者在View菜单中选择Show Console打开控制台,输入下面的代码。

- Sublime 3

```Python
import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
```
- Sublime 2

```Python
import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read());print('Please restart Sublime Text to finish installation')
```
2. 在浏览器中输入 https://sublime.wbond.net/Package%20Control.sublime-package 下载包管理工具的安装包,并找到安装Sublime目录下名为&quot;Installed Packages&quot;的目录,把刚才下载的文件放到这个文件加下,然后重启Sublime Text就搞定了。


- 安装插件。通过Preference菜单的Package Control或快捷键Ctrl+Shift+P打开命令面板,在面板中输入Install Package就可以找到安装插件的工具,然后再查找需要的插件。我们推荐大家安装以下几个插件:

- SublimeCodeIntel - 代码自动补全工具插件。
- Emmet - 前端开发代码模板插件。
- Git - 版本控制工具插件。
- Python PEP8 Autoformat - PEP8规范自动格式化插件。
- ConvertToUTF8 - 将本地编码转换为UTF-8。

> **说明**:事实上[Visual Studio Code](<https://code.visualstudio.com/>)可能是更好的选择,它不用花钱并提供了更为完整和强大的功能,有兴趣的读者可以自行研究。

#### PyCharm - Python开发神器

PyCharm的安装、配置和使用在[《玩转PyCharm》](../番外篇/玩转PyCharm.md)进行了介绍,有兴趣的读者可以选择阅读。

![](./res/python-pycharm.png)

### 练习

1. 在Python交互式环境中输入下面的代码并查看结果,请尝试将看到的内容翻译成中文。

```Python
import this
```

> **说明**:输入上面的代码,在Python的交互式环境中可以看到Tim Peter撰写的[“Python之禅”](../Python之禅.md),里面讲述的道理不仅仅适用于Python,也适用于其他编程语言。

2. 学习使用turtle在屏幕上绘制图形。

> **说明**:turtle是Python内置的一个非常有趣的模块,特别适合对计算机程序设计进行初体验的小伙伴,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言。

```Python
import turtle

turtle.pensize(4)
turtle.pencolor('red')

turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)

turtle.mainloop()
```

> **提示**:本章提供的代码中还有画国旗和画小猪佩奇的代码,有兴趣的读者请自行研究。
Loading