diff --git a/Day01-15/01.初识Python.md b/Day01-15/01.初识Python.md index 4e09bf4..b688213 100644 --- a/Day01-15/01.初识Python.md +++ b/Day01-15/01.初识Python.md @@ -5,9 +5,9 @@ #### Python的历史 1. 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。 -2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础来构造应用程序。 +2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,除此之外还有PyPy、Brython、Pyston等其他实现),可以调用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的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。 +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)的博文。 @@ -20,19 +20,19 @@ Python的优点很多,简单的可以总结为以下几点。 2. 学习曲线低,跟其他很多语言相比,Python更容易上手。 3. 开放源代码,拥有强大的社区和生态圈。 4. 解释型语言,天生具有平台可移植性。 -5. 支持两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。 -6. 可扩展性和可嵌入性,可以调用C/C++代码,也可以在C/C++中调用Python。 +5. 对两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。 +6. 可扩展性和可嵌入性,例如在Python中可以调用C/C++代码。 7. 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。 Python的缺点主要集中在以下几点。 1. 执行效率稍低,因此计算密集型任务可以由C/C++编写。 -2. 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被淡化。 +2. 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被弱化。 3. 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。 #### Python的应用领域 -目前Python在Web应用开发、云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。 +目前Python在Web应用开发、云基础设施、DevOps、网络数据采集(爬虫)、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、自然语言处理、图像识别等一系列相关的职位。 ### 搭建编程环境 @@ -44,15 +44,15 @@ Python的缺点主要集中在以下几点。 #### Linux环境 -Linux环境自带了Python 2.x版本,但是如果要更新到3.x的版本,可以在[Python的官方网站](https://www.python.org)下载Python的源代码并通过源代码构建安装的方式进行安装,具体的步骤如下所示。 +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 ``` -下载Python源代码并解压缩到指定目录。 +2. 下载Python源代码并解压缩到指定目录。 ```Shell wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz @@ -60,7 +60,7 @@ xz -d Python-3.7.3.tar.xz tar -xvf Python-3.7.3.tar ``` -切换至Python源代码目录并执行下面的命令进行配置和安装。 +3. 切换至Python源代码目录并执行下面的命令进行配置和安装。 ```Shell cd Python-3.7.3 @@ -68,7 +68,7 @@ cd Python-3.7.3 make && make install ``` -修改用户主目录下名为.bash_profile的文件,配置PATH环境变量并使其生效。 +4. 修改用户主目录下名为.bash_profile的文件,配置PATH环境变量并使其生效。 ```Shell cd ~ @@ -83,7 +83,7 @@ export PATH=$PATH:/usr/local/python37/bin # ... 此处省略下面的代码 ... ``` -激活环境变量。 +5. 激活环境变量。 ```Shell source .bash_profile @@ -91,7 +91,7 @@ source .bash_profile #### macOS环境 -macOS也自带了Python 2.x版本,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行python命令来启动2.x版本的Python解释器,可以通过执行python3命令来启动3.x版本的Python解释器。 +macOS也自带了Python 2.x版本,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行`python`命令来启动2.x版本的Python解释器,启动3.x版本的Python解释器需要执行`python3`命令。 ### 从终端运行Python程序 @@ -119,7 +119,7 @@ print(sys.version) #### 编写Python源代码 -可以用文本编辑工具(推荐使用[Sublime]()、[Atom]()、[Visual Studio Code]()等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。 +可以用文本编辑工具(推荐使用[Sublime]()、[Visual Studio Code]()等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。 ```Python print('hello, world!') @@ -188,29 +188,7 @@ pip3 install ipython ![](./res/python-ipython.png) -当然,我们也可以通过安装Jupyter工具并运行名为notebook的程序在浏览器窗口中进行交互式代码编写操作。 - -```Shell -pip install jupyter -``` - -或 - -```Shell -pip3 intall jupyter -``` - -然后执行下面的命令: - -```Shell -jupyter notebook -``` - - - -![](./res/python-jupyter-2.png) - -#### Sublime / Visual Studio Code - 高级文本编辑器 +#### Sublime - 高级文本编辑器 ![](./res/python-sublime.png) @@ -242,7 +220,7 @@ jupyter notebook - Python PEP8 Autoformat - PEP8规范自动格式化插件。 - ConvertToUTF8 - 将本地编码转换为UTF-8。 -> 说明:事实上Visual Studio Code可能是更好的选择,它不用花钱并提供了更为完整和强大的功能,有兴趣的读者可以自行研究。 +> 说明:事实上[Visual Studio Code]()可能是更好的选择,它不用花钱并提供了更为完整和强大的功能,有兴趣的读者可以自行研究。 #### PyCharm - Python开发神器 @@ -270,6 +248,7 @@ PyCharm的安装、配置和使用在[《玩转PyCharm》](../玩转PyCharm.md) turtle.pensize(4) turtle.pencolor('red') + turtle.forward(100) turtle.right(90) turtle.forward(100) @@ -277,5 +256,6 @@ PyCharm的安装、配置和使用在[《玩转PyCharm》](../玩转PyCharm.md) turtle.forward(100) turtle.right(90) turtle.forward(100) + turtle.mainloop() ``` diff --git a/Day01-15/02.语言元素.md b/Day01-15/02.语言元素.md index d5d7c0d..8e1e1f7 100644 --- a/Day01-15/02.语言元素.md +++ b/Day01-15/02.语言元素.md @@ -96,7 +96,7 @@ print(type(d)) print(type(e)) ``` -在对变量类型进行转换时可以使用Python的内置函数(准确的说下面列出的并不是真正意义上的函数,而是后面我们要讲到的创建对象的构造方法)。 +在对变量类型进行转换时可以使用Python的内置函数。 - `int()`:将一个数值或字符串转换成整数,可以指定进制。 - `float()`:将一个字符串转换成浮点数。 diff --git a/Day01-15/ans/Day01/translation_for_zen_of_python.jpg b/Day01-15/ans/Day01/translation_for_zen_of_python.jpg deleted file mode 100644 index 10460d3..0000000 Binary files a/Day01-15/ans/Day01/translation_for_zen_of_python.jpg and /dev/null differ diff --git a/Day36-40/36-38.关系型数据库MySQL.md b/Day36-40/36-38.关系型数据库MySQL.md index a9761c7..5effe50 100644 --- a/Day36-40/36-38.关系型数据库MySQL.md +++ b/Day36-40/36-38.关系型数据库MySQL.md @@ -235,7 +235,7 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 drop database if exists school; -- 创建名为school的数据库并设置默认的字符集和排序方式 - create database school default charset utf8 collate utf8_bin; + create database school default charset utf8; -- 切换到school数据库上下文环境 use school; @@ -245,7 +245,7 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 ( collid int auto_increment comment '编号', collname varchar(50) not null comment '名称', - collmaster varchar(20) not null comment '院长', + intro varchar(500) default '' comment '介绍', primary key (collid) ); @@ -254,9 +254,9 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 ( stuid int not null comment '学号', stuname varchar(20) not null comment '姓名', - stusex boolean default 1 comment '性别', - stubirth date not null comment '出生日期', - stuaddr varchar(255) default '' comment '籍贯', + sex boolean default 1 comment '性别', + birth date not null comment '出生日期', + addr varchar(255) default '' comment '籍贯', collid int not null comment '所属学院', primary key (stuid), foreign key (collid) references tb_college (collid) @@ -267,7 +267,7 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 ( teaid int not null comment '工号', teaname varchar(20) not null comment '姓名', - teatitle varchar(10) default '助教' comment '职称', + title varchar(10) default '助教' comment '职称', collid int not null comment '所属学院', primary key (teaid), foreign key (collid) references tb_college (collid) @@ -278,7 +278,7 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 ( couid int not null comment '编号', couname varchar(50) not null comment '名称', - coucredit int not null comment '学分', + credit int not null comment '学分', teaid int not null comment '授课老师', primary key (couid), foreign key (teaid) references tb_teacher (teaid) @@ -548,13 +548,13 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 ```SQL -- 插入学院数据 - insert into tb_college (collname, collmaster) values - ('计算机学院', '左冷禅'), - ('外国语学院', '岳不群'), - ('经济管理学院', '风清扬'); + insert into tb_college (collname, intro) values + ('计算机学院', '创建于1956年是我国首批建立计算机专业。学院现有计算机科学与技术一级学科和网络空间安全一级学科博士学位授予权,其中计算机科学与技术一级学科具有博士后流动站。计算机科学与技术一级学科在2017年全国第四轮学科评估中评为A;2019 U.S.News全球计算机学科排名26名;ESI学科排名0.945‰,进入全球前1‰,位列第43位。'), + ('外国语学院', '1998年浙江大学、杭州大学、浙江农业大学、浙江医科大学四校合并,成立新的浙江大学。1999年原浙江大学外语系、原杭州大学外国语学院、原杭州大学大外部、原浙江农业大学公外部、原浙江医科大学外语教学部合并,成立浙江大学外国语学院。2003年学院更名为浙江大学外国语言文化与国际交流学院。'), + ('经济管理学院', '四川大学经济学院历史悠久、传承厚重,其前身是创办于1905年的四川大学经济科,距今已有100多年的历史。已故著名经济学家彭迪先、张与九、蒋学模、胡寄窗、陶大镛、胡代光,以及当代著名学者刘诗白等曾先后在此任教或学习。在长期的办学过程中,学院坚持以马克思主义的立场、观点、方法为指导,围绕建设世界一流经济学院的奋斗目标,做实“两个伟大”深度融合,不断提高党的建设质量与科学推进一流事业深度融合。'); -- 插入学生数据 - insert into tb_student (stuid, stuname, stusex, stubirth, stuaddr, collid) values + insert into tb_student (stuid, stuname, sex, birth, addr, collid) values (1001, '杨逍', 1, '1990-3-4', '四川成都', 1), (1002, '任我行', 1, '1992-2-2', '湖南长沙', 1), (1033, '王语嫣', 0, '1989-12-3', '四川成都', 1), @@ -571,10 +571,10 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 delete from tb_student where stuid=4040; -- 更新学生数据 - update tb_student set stuname='杨过', stuaddr='湖南长沙' where stuid=1001; + update tb_student set stuname='杨过', addr='湖南长沙' where stuid=1001; -- 插入老师数据 - insert into tb_teacher (teaid, teaname, teatitle, collid) values + insert into tb_teacher (teaid, teaname, title, collid) values (1122, '张三丰', '教授', 1), (1133, '宋远桥', '副教授', 1), (1144, '杨逍', '副教授', 1), @@ -582,7 +582,7 @@ MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行 (3366, '韦一笑', '讲师', 3); -- 插入课程数据 - insert into tb_course (couid, couname, coucredit, teaid) values + insert into tb_course (couid, couname, credit, teaid) values (1111, 'Python程序设计', 3, 1122), (2222, 'Web前端开发', 2, 1122), (3333, '操作系统', 4, 1122), diff --git a/README.md b/README.md index a3a25c1..21005e9 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ - 读写Excel文件 - xlrd模块 / xlwt模块 - 生成PDF文件 - pypdf2模块 / reportlab模块 -### Day16~Day20 - [Python语言进阶 ](./Day16-20/16.Python语言进阶.md) +### Day16~Day20 - [Python语言进阶 ](./Day16-20/16-20.Python语言进阶.md) - 常用数据结构 - 函数的高级用法 - “一等公民” / 高阶函数 / Lambda函数 / 作用域和闭包 / 装饰器 @@ -178,7 +178,7 @@ - 迭代器和生成器 - 相关魔术方法 / 创建生成器的两种方式 / - 并发和异步编程 - 多线程 / 多进程 / 异步IO / async和await -### Day21~30 - [Web前端入门](./Day21-30/21.Web前端概述.md) +### Day21~30 - [Web前端入门](./Day21-30/21-30.Web前端概述.md) - 用HTML标签承载页面内容 - 用CSS渲染页面 @@ -188,7 +188,7 @@ - Element的使用 - Bootstrap的使用 -### Day31~35 - [玩转Linux操作系统](./Day31-35/31.玩转Linux操作系统.md) +### Day31~35 - [玩转Linux操作系统](./Day31-35/31-35.玩转Linux操作系统.md) - 操作系统发展史和Linux概述 - Linux基础命令 @@ -202,7 +202,7 @@ ### Day36~40 - [数据库基础和进阶](./Day36-40) -- [关系型数据库MySQL](./Day36-40/36.关系型数据库MySQL.md) +- [关系型数据库MySQL](./Day36-40/36-38.关系型数据库MySQL.md) - 关系型数据库概述 - MySQL的安装和使用 - SQL的使用 @@ -214,7 +214,7 @@ - 数据完整性 - 数据一致性 - 在Python中操作MySQL -- [NoSQL入门](./Day36-40/39.NoSQL入门.md) +- [NoSQL入门](./Day36-40/39-40.NoSQL入门.md) - NoSQL概述 - Redis概述 - Mongo概述 @@ -288,7 +288,7 @@ - 使用装饰器实现页面缓存 - 为数据接口提供缓存服务 -#### Day52 - [文件上传和富文本编辑](./Day41-55/52.文件上传.md) +#### Day52 - [文件上传和富文本编辑](./Day41-55/52.文件上传和富文本编辑器.md) - 文件上传表单控件和图片文件预览 - 服务器端如何处理上传的文件