学习编程已经好些年头了,这当中当然也有许多艰难的时刻,最难的时候大概是一个小问题由于找不到解决方法困扰自己好长时间吧,从最开始一大片一大片的知识盲区,到现在自己脑海中蕴藏的知识越来越多,知识的积累所带来的质变大概是如今心态与之前不同最主要的原因。当然,了解的越多越感到自己的渺小,越感到自己的无知,不过认识到这种现实存在也许正是一个人持续进步最合理的状态,不过分相信自己,也不过分看轻自己。除了技术之外,我还比较喜欢阅读国学经典,我从中华文化里领悟最深刻的就是真诚和谦,人一旦真诚就会向善,善是我与别人之间适当关系的实现, 判断适当与否,要参考三点 :内心感受要真诚 ;对方期许要沟通;社会规范要遵守。一个人如果不真诚,代表他也不期许你真诚。你与他只剩下社会规范了,纯粹公事公办。我去搭车或买票,当然不可能奢望别人礼让。但是轮到我买票时,也不希望别人插队。我下课时去倒水,同学见到我就礼让,那是因为师生之间有真诚的情感;但在社会上,别人会礼让吗?不一定。所以,社会需要法律,大家照规矩行事,不要空谈谁好谁坏,无所谓善良不善良。如果你与一个人有了交情,状况就不一样了,甚至可以为他牺牲生命。这就是儒家思想的适用性。另一个是关于谦的认识,谦为易经中第十五卦,卦象为坤上艮下,又名地山谦,谦卦的卦象是山在地下,山作为高大之物反而处在地的下面,以此来象征“谦”的德行;山藏在地下,不露山不显水,表现低调,可以说是谦逊。在《周易》六十四卦中,唯有谦卦是六爻皆吉的卦。老子说:“上善若水,水善利万物而不争,处众人之所恶,故几于道。”这就是“谦道”,谦卑于下,如水流谷底,水流即善流。雄鹰低飞,并非志向不够高远,而是为了把沿途风景看得更为真切、更为明白、更为客观。天道循环,风水轮流转,十年河东,十年河西。人只有心存敬畏,才能行有所止,才能感知天地、自然的广袤、浩瀚,才能感知命运、天道的神奇、博大;才能感知自身的渺小、卑微,从而唤醒内心的自律和良知,扬善至恶,慎独修心,培养出高尚的人格。我们每个人都会在人生的某一刻将人生的重心转到开始认识自己,只不过大部分人一直在最美好的年纪认识别人。我前几年一直觉得得到才是幸福,可是近些年来慢慢懂得失去的幸福,Less is more,少就是多,弯路就是直路。希望每个有志向的年轻人都可以用自己的努力获得体面的工作和生活!
人生苦短,我用Python
在Python开发领域流传着这样一句话:人生苦短,我用Python,这句话出自Bruce Eckel,原文是:Life is short,you need Python。使用过Python语言的程序员,或者从别的语言(比如Java)转换到Python开发的程序员或许对这句话的理解更加深刻。
例如长期使用过C和Java语言的程序员,在转向Python之后就会发现。采用Python进行机器学习方向的研发确实存在很多方便,主要体现在以下几个方面:
- 第一:代码量下降明显。
以机器学习为例,采用Java和Python完成同一个算法实现时,Python的实现代码量明显少于Java,有的下降幅度甚至超过一半以上。代码量的下降意味着开发周期的缩短,这在一定程度上减轻了程序员的开发负担。程序员可以把节省的时间做更多有意义的事情,比如做算法设计,或者用来学习等。
- 第二:开发方便。
Python语言完成代码实现的过程还是比较方便的,一个重要的原因是Python有丰富的库可以使用,比如在机器学习领域比较常见的库有Numpy、Scipy、matplotlib、pandas等,这些库提供了大量的基础实现,在编码的过程中,可以方便的使用这些库,从而避免了大量代码的编写过程。
- 第三:语言生态健全。
Python语言目前在Web开发、大数据开发、人工智能开发、后端服务开发和嵌入式开发等领域都有广泛的应用,成熟案例非常多,所以采用Python完成代码实现的时候往往具有较小的风险。
目前,伴随着大数据和人工智能的发展,目前Python语言的上升趋势非常明显,相信未来Python语言在产业互联网阶段会有更加广泛的应用。简而言之,学习Python语言是个不错的选择。那接下来就开始跟着我开始Python学习之路吧 !
学习目标:了解计算机基础知识并完成Python的环境搭建
内容概要
- 计算机基础
- Python简介
- 环境搭建
- 编码
- 编程初体验
- 练习
- 小结
一、计算机基础入门
1. 计算机基础
1.1 基本概念
计算机的组成
计算机是由多个硬件组合组成,常见的硬件有:CPU、硬盘、内存、网卡、显示器、机箱、电源。。。
注意事项:机械将零件组合在一起,他们之间是无法进行协作。操作系统
用于协调计算机的各个硬件,让硬件之间进行协同工作,已完成某个目标。
常见的操作系统分类:windows,优点:生态牛逼、工具多;缺点:略慢、收费。【个人】XPwin7win8win10
…
linux,优点:资源占用少、免费(很多公司的服务器上安装linux);缺点:工具少、告别游戏。【企业的服务器】centosubunturedhat
…
- mac,优点:生态还行、工具差不多都有、用户体验和交互好;缺点:有些软件和游戏不支持。
软件(应用程序)
安装操作系统之后,我们会在自己电脑上安装一些常用的软件,例如:QQ、杀毒、微信…
问题来了,这些软件是否谁开发的?是否各大公司的程序员开发的
可以把软件理解为一大堆的代码(一篇文章)。
1.2 编程语言
软件,是由程序员使用编程语言开发出来的一大堆代码的集合。全球的编程语言有2500+多种,常见的编程语言:Java、C#、Python、PHP、C…
作文,是由小学生使用汉语/英语/法语/日语…写出来的一大堆的文字集合。
学习编程语言就是学习他的语法,根据语法再去编写相应的软件中的功能。
Python中的输出语法规则print('hello python!')Golang语言中的输出语法规则fmt.Println("hello golang!")
1.3 编译器/解释器
编译器/解释器,就是一个翻译官,将代码翻译成计算机能够识别的命令。
A使用Pyton开发了一个软件 B使用Golang开发了一个软件
Python解释器 Golang编译器
操作系统
CPU 硬盘 网卡 内存 电源 ......

为什么有的叫解释器?有的叫编译器?
- 解释器,实时翻译。拿到1000行代码之后,解释一句交给操作系统一句。
- 编译器,全文翻译。拿到2000行之后会将它饼啊议程一个临时文件(计算机能够识别命令),再把文件交给操作系统去读取。
Python、PHP、javascript、Ruby…一般称为解释型语言
C、C++、Go、Java…一般称为编译型语言
2. 学习编程的本质
学编程语言本质上就是三件事:
- 选择一门编程语言,在自己的电脑上安装此编程语言相关的编译器/解释器。
- 学习编程语言的语法规则,根据语法规则 + 业务背景 设计开发你的软件(代码集合)。
- 使用编译器/解释器去运行自己写的代码。
3. 语言的分类
翻译的维度
- 解释型语言:
Python、PHP等 - 编译型语言:
C、Java、Golang
- 解释型语言:
高低的维度
低级编程语言,写出来的代码可以被计算机识别
机器语言,101 001 00001 00010 00101100000011100,机器码,交给计算机去执行 汇编语言,MOV INC,指令,交给计算机去执行高级编程语言,写出来的代码无法直接被计算机识别,但可以通过某种范式将其转换为计算机可以识别的语言
C C++ Java Python Ruby... 这类编程语言在编写代码是几乎是写英语作文 交由相关编译器或解释器翻译成机器码,然后再交给计算机去执行。注意:现在基本上都是用高级编程语言
二、Python简介
1. Python的历史
- 1989年圣诞节:Python的创始人为吉多·范罗苏姆(Guido van Rossum),在1989年圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 Python的名字来自Guido所挚爱的电视剧Monty Python’s Filting Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用、可扩展的语言。Guido von Rossum开始写Python语言的编译器。
- 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,还有对列表、字典等核心数据类型,同时支持以模块为基础来构造应用程序。
- 1994年1月:Python 1.0正式发布。
- 2000年10月16日:Python 2.0发布,增加了完整的垃圾回收,提供了对Unicode的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。
- 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。
Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以阅读名为《Python简史》的网络文章。
2. Python的优缺点
Python的优点很多,简单的可以总结为以下几点。
- 简单明了,学习曲线低,比很多编程语言都容易上手。
- 开放源代码,拥有强大的社区和生态圈,尤其是在数据分析和机器学习领域。
- 解释型语言,天生具有平台可移植性,代码可以工作于不同的操作系统。
- 对两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。
- 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。
Python的缺点主要集中在以下几点。
- 执行效率稍低,对执行效率要求高的部分可以由其他语言(如:C、C++)编写。
- 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被弱化。
- 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。
3. Python的应用领域
目前Python在Web应用后端开发、云基础设施建设、DevOps、网络数据采集(爬虫)、自动化测试、数据分析、机器学习等领域都有着广泛的应用。
4. Python的发展前景
2020 TIOBE排行榜:https://www.tiobe.com/tiobe-index/


5. Python的解释器种类
想要学一门编程语言:安装Python解释器,学习Python语法并编写代码,使用Python解释器去执行编写好的代码。
由于Python太火了,所以就有很多公司都开发了Python解释器(用来翻译python代码成为计算机能够识别的命令)。
Cpython:Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。Jyhton:Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。IronPython:Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)PyPy(特殊):是对Cpython的优化,执行效率提高了。引入编译器的功能,本质上将Python代码进行编译,再去执行编译后的代码。RubyPython、Brython…
注意:常说的Python解释器就是指的Cpython
三、环境搭建
1. 安装Python解释器
想要开始Python编程之旅,首先得在自己使用的计算机上安装Python解释器环境,下面将以安装官方的Python解释器为例,讲解如何在不同的操作系统上安装Python环境。官方的Python解释器是用C语言实现的,也是使用最为广泛的Python解释器,通常称之为CPython。除此之外,Python解释器还有Java语言实现的Jython、C#语言实现的IronPython以及PyPy、Brython、Pyston等版本,有兴趣的读者可以自行了解。
1.1 Windows环境
去Python官网下载Python解释器(3.9.0)
官网地址:https://www.python.org/downloads/


淘宝镜像:由于Python官网服务器在国外,在国内下载速度较慢,可以选择国内镜像站点进行下载。
https://npm.taobao.org/mirrors/python

选择指定版本安装包并下载,按照提示一步一步安装
安装完成后在安装目录下有一个python.exe文件,就是python解释器的启动文件
测试安装是否成功
C:\Users\Administrator>python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
C:\Users\Administrator>python --version
Python 3.7.8
若正确输出以上信息,则说明安装成功。
1.2 Linux环境
Linux环境自带了Python 2.x版本,但是如果要更新到3.x的版本,可以在Python的官方网站下载Python的源代码并通过源代码构建安装的方式进行安装,具体的步骤如下所示(以CentOS为例)。
- 安装依赖库(因为没有这些依赖库可能在源代码构件安装时因为缺失底层依赖库而失败)。
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源代码并解压缩到指定目录。
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
- 切换至Python源代码目录并执行下面的命令进行配置和安装。
cd Python-3.7.6
./configure --prefix=/usr/local/python37 --enable-optimizations
make && make install
- 修改用户主目录下名为.bash_profile的文件,配置PATH环境变量并使其生效。
cd ~
vim .bash_profile
# ... 此处省略上面的代码 ...
export PATH=$PATH:/usr/local/python37/bin
# ... 此处省略下面的代码 ...
- 激活环境变量。
source .bash_profile
1.3 macOS环境
macOS也自带了Python 2.x版本,可以通过Python的官方网站提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行python命令来启动2.x版本的Python解释器,启动3.x版本的Python解释器需要执行python3命令。
2. 运行Python程序
2.1 确认Python的版本
可以Windows的命令行提示符中键入下面的命令。
python --version
在Linux或macOS系统的终端中键入下面的命令。
python3 --version
当然也可以先输入python或python3进入交互式环境,再执行以下的代码检查Python的版本。
import sys
print(sys.version_info)
print(sys.version)
2.2 编写Python源代码
可以用文本编辑工具(推荐使用Pycharm、Sublime、Visual Studio Code等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。
print('Hello, Life is short, I use Python!')
2.3 运行程序
切换到源代码所在的目录并执行下面的命令,看看屏幕上是否输出了”Hello, Life is short, I use Python!”。
python hello.py
或
python3 hello.py
3. Python开发工具
3.1 IDLE
IDLE是安装Python环境时自带的集成开发工具,如下图所示。但是由于IDLE的用户体验并不是那么好所以很少在实际开发中被采用。
3.2 IPython - 更好的交互式编程工具
IPython是一种基于Python的交互式解释器。相较于原生的Python交互式环境,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython,具体的操作如下所示。
pip install ipython
或
pip3 install ipython
安装成功后,可以通过下面的ipython命令启动IPython,如下图所示。

3.3 Sublime Text - 高级文本编辑器

首先可以通过官方网站下载安装程序安装Sublime Text 3或Sublime Text 2。
安装包管理工具。
- 通过快捷键Ctrl+`或者在View菜单中选择Show Console打开控制台,输入下面的代码。
- Sublime 3
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
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')- 在浏览器中输入 [https://sublime.wbond.net/Package%20Control.sublime-package](https://sublime.wbond.net/Package Control.sublime-package) 下载包管理工具的安装包,并找到安装Sublime目录下名为”Installed Packages”的目录,把刚才下载的文件放到这个文件加下,然后重启Sublime Text就搞定了。
安装插件。通过Preference菜单的Package Control或快捷键Ctrl+Shift+P打开命令面板,在面板中输入Install Package就可以找到安装插件的工具,然后再查找需要的插件。我们推荐大家安装以下几个插件:
- SublimeCodeIntel - 代码自动补全工具插件。
- Emmet - 前端开发代码模板插件。
- Git - 版本控制工具插件。
- Python PEP8 Autoformat - PEP8规范自动格式化插件。
- ConvertToUTF8 - 将本地编码转换为UTF-8。
3.4 Vscode - 宇宙最强插件编辑器
官网:https://code.visualstudio.com/

3.5 Pycharm - 宇宙最强Python编辑器
官网:https://www.jetbrains.com/pycharm/

注意:pycharm分为社区版和专业版,社区版免费,单功能相对于专业版少一些,专业版的收费。
四、编码(密码本)
计算机中所有数据本质上都是以0和1的组合来存储

在计算机中会将中文内存转换成010101010101…,最终存储到硬盘上。
在计算机中有这么一个编码的概念(密码本)。
张 --> 11100101 10111100 10100000
亚 --> 11100100 10111010 10011010
飞 --> 11101001 10100011 10011110
在计算机中有多种编码
每种编码都有自己的一套密码本, 都维护着自己的一套规则,如:
utf-8编码:
张 --> 11100101 10111100 10100000
亚 --> 11100100 10111010 10011010
飞 --> 11101001 10100011 10011110
gbk编码:
张 --> 0b11010101 0b11000101
亚 --> 0b11010001 0b11000111
飞 --> 0b10110111 0b11001001
所以,使用不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的。
注意事项:以某个编码的形式进行保存文件,以后就要以这种编码去打开这个文件,否则就会出现乱码。
UTF-8编码去保存一个文件,GBK编码形式去打开,乱码
乱码的出现因为文件的存储方式和打开方式不一致导致。另外,如果数据丢失也可可能会造成乱码。
例如:张,对应存储的是:11100101 10111100 10100000,如果文件中的内容丢失只剩下11100101 10111100 101,则读取时候就可能出现乱码。
五、编程初体验
命令行基础操作
切换盘符 盘名: 例如:D: 同一盘符内切换路径 cd 路径 例如:cd 02_Python快速上手运行Python的两种方式
交互式
方式一:在终端输入python
C:\Users\Administrator>python Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print('交互式') 交互式 >>>方式二:在终端输入ipython
C:\Users\Administrator>ipython Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)] Type 'copyright', 'credits' or 'license' for more information IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: print('ipython交互式界面') ipython交互式界面方式三:
jupyter notebook
脚本式
终端
python 程序文件名.py编辑器

编码必须要保持保存和打开一致,否则会乱码。
默认Python解释器是以UTF-8编码形式打开文件,如果想要修改Python的默认解释器编码,可以这样做:
# -*- coding:gbk -*- print('编程初体验')建议:所有Python代码文件都要以UTF-8编码保存和读取


六、练习
在Python交互式环境中输入下面的代码并查看结果,请尝试将看到的内容翻译成中文。
import this说明:输入上面的代码,在Python的交互式环境中可以看到Tim Peter撰写的“Python之禅”,里面讲述的道理不仅仅适用于Python,也适用于其他编程语言。
学习使用turtle在屏幕上绘制图形。
说明:turtle是Python内置的一个非常有趣的模块,特别适合对计算机程序设计进行初体验的小伙伴,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言。
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()
七、小结
简述硬件 & 操作系统 & 软件(应用系统)之间的关系。
计算机是由多个硬件组成,例如:CPU、硬盘、内存、网卡、主板等。 操作系统则是安装在计算机上用于协调各硬件进行配合工作的,它将用户的一些行为转为计算机能够势必的命令,并协调各个硬件配合完成相关命令。 软件,是由程序员开发并安装在操作系统的程序(本质是一大堆代码)。例如:微信、QQ、金山毒霸等。列举常见的操作系统
常见的操作系统有三类: - win: xp, win7, win8, win10 等 - linux: centos. ubuntu, redhat 等 - mac: Catalina, Mojave, Sierra 等简述编译器和解释器的区别和作用
编译器和解释器的作用是将各编程语言的代码进行翻译,从而使得计算机能够识别并执行。 编译器,全文翻译,讲代码编译成`临时文件`,再执行临时文件。 解释器,实时翻译,对代码实行边解释边执行。编程语言进行分类
解释的角度:编译型和解释型 高低的角度:高级编程语言和低级编程语言Python解释器的种类有哪些?
CPython、JPython、IronPython、PyPy等系统环境变量的作用是什么?
在将某个目录添加到环境变量前,如果在终端想要取运行此目录下的文件,则只需要输入文件名即可(无需再写后缀),胸会自动读取环境变量中的路径并自动拼接。Python和Pycharm的区别是什么?
Python是解释器,用于将Python解释称计算机能够识别的命令 Pycharm是IDE,用于方便快捷的编写Python代码并实现运行Python代码的一个工具。