我的全栈之路-Python基础之Python概述与开发环境搭建
- 1.1 信息技术发展趋势
- 1.2 浅谈计算机系统架构
- 1.2.1 计算机系统架构概述
- 1.2.2 计算机硬件系统
- 1.2.2 计算机软件系统
- 1.3 程序和指令
- 1.4 编程语言发展史
- 1.5 计算机语言应用场景
- 1.6 Python概述
- 1.6.1 Python发展历史
- 1.6.2 Python的特点
- 1.6.3 Python的应用场景
- 1.7 Python开发环境搭建
- 1.7.1 Python解释器概述
- 1.7.2 Python解释器下载
- 1.7.3 Python解释器安装
- 1.8 使用Visual Studio Code开发Python程序
- 1.8.1 Visual Studio Code下载和安装
- 1.8.2 Visual Studio Code编写、运行Python程序
- 1.9 Pycharm开发Python程序
- 1.9.1 Pycharm介绍
- 1.9.2 Pycharm安装
- 1.9.3 Pycharm首次启动设置
- 1.9.4 使用Pycharm开发Python程序
- 1.10 注释
1.1 信息技术发展趋势
目前信息技术主要经历了互联网、移动互联网以及以大数据、云计算、物联网、人工智能区块为代表的新兴技术三个阶段。
-
互联网
互联网自从20世纪90年代逐渐兴起,主要是通过网络连接了世界各地的PC机,笔记本以及背后提供数据服务的大型服务器集群。
其中绝大多数PC机都运行着Windows,macOS操作系统,而服务器主要是以类Unix(CentOS,Ubuntu)占据主要市场。
依靠互联网成长起来的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。 -
移动互联网
移动互联网主要从2010开始爆发式增长,主要是通过网络连接了世界各地的移动设备(最典型的就是手机),它们绝大多数都运行着Android,iOS操作系统。
依靠移动互联网成长起来的公司有小米、美团、滴滴、蚂蚁金服。 -
大数据、云计算
随着用户的爆发式增长,以海量数据为基础的大数据、云计算技术在Baidu、Alibaba、Tencent等大型互联网公司有着广泛的商业应用场景。 -
物联网
物联网会以手机作为中枢,通过物联网连接所有的智能设备,包括智能家居、汽车、电视等嵌入式设备,目前小米、华为等在智能家居、电视、汽车等领域广泛布局,2019年8月华为发布了鸿蒙系统。 -
人工智能
人工智能(AI)作为当前最火爆的技术,国内的Baidu、Tencent、Alibaba等互联网公司逐渐根据自身的核心业务开始布局,Alibaba最早将人工智能技术布局在电商和物流领域,而Baidu开发出了对话式人工智能操作系统Dueros和自动驾驶平台Apollo,Tencent则是在游戏领域应用人工智能。 -
区块链
区块链经历了数字货币、智能合约和超级账本三个阶段,区块链技术可以广泛使用在金融、供应链、物流、公共服务等领域,解决互联网的信任问题,目前蚂蚁金服、京东已经有大量的区块链应用落地。
1.2 浅谈计算机系统架构
1.2.1 计算机系统架构概述
计算机是一种用于高速计算的电子机器,可以进行数值运算、逻辑运算,还有存储记忆功能,且能够通过编写程序实现来自动、高速的处理数据。
计算机系统由硬件系统和软件系统组成,由软硬件协作完成人们日常生活和工作中的各种任务,例如听歌、看电影、购物、写博客等等。
微信聊天:微信监听键盘输入的数据,并放到内存,然后传给网卡,通过网络传递给另外一个网卡,再从网卡传递到内存,显示在显示器上。
QQ音乐:QQ音乐将音乐数据加载到内存上,然后写到声卡上。
腾讯视频:应用程序将视频数据加载到内存,然后写到显卡上。
Office写文档:Office将内存中的数据写入到磁盘上。
Office读文档:Offcice将磁盘的数据加载到内存,然后显示在屏幕上。
1.2.2 计算机硬件系统
现在计算机是由运算器、控制器、存储器、输入设备和输出设备五大部分组成,它们各司其职,完成了数据的计算、存储、传输。
-
CPU
CPU也就是中央处理器,由运算器和控制器所组成,其作用是从内存中获取指令并执行后将结果返回给内存或写入磁盘和控制其他设备协同工作。 -
内存
内存是采用编址存储,其主要作用是作为程序的工作区,程序运行时会将指令和数据都加载到内存,内存中的数据断电后会丢失。 -
硬盘
硬盘是用于存储海量数据,分为机械硬盘和固态硬盘两大类。 -
IO设备
IO设备用于数据的输入和输出,其中常见的IO设备包含鼠标、键盘,常见的输出设备包括声卡、显卡。
网卡也是属于IO设备的一种,主要用于网络上的数据接收和发送。
在后期程序排查错误时除了要考虑程序本身的错误以外,还要考虑计算机硬件故障,例如磁盘写满,网络不通等问题
每个计算机组件的IO性能也各不相同,CPU、内存、磁盘都遵循容量越大、IO性能越差的特点。
在后期优化程序时需要考虑程序时间复杂度和空间复杂度的问题。
1.2.2 计算机软件系统
软件的出现实现了人和计算机更好的交互,它是由开发人员采用某种编程语言(C/C++/Java等等)编写的一系列指令以及不同业务场景产生的数据组成。
通常将软件分为系统软件和应用软件
系统软件:驱动程序、操作系统、语言处理程序等都是属于系统软件。
驱动程序是硬件厂商使用编程语言(C/C++)编写的程序,在使用硬件(例如打印机)前必须安装对应的驱动程序。
操作系统是负责通过驱动程序管理硬件资源,同时给应用软件提供运行平台,目前主流的操作系统有Windows,Linux,macOS,Android,iOS。
语言处理程序是用于将编程语言编写的源程序编译或者解释成对应平台的机器语言。
应用软件:微信、支付宝、淘宝、Office都是属于应用软件,它们都是运行在操作系统之上的。
运行在不同操作系统之上的软件交互方式也不一样,Linux上的软件通常是使用字符界面的交互方式,运行在Windows,macOS上的软件通常是以鼠标、键盘操作的交互方式,运行在Android,iOS上的软件通常是以手势触控、语音等交互方式。
1.3 程序和指令
程序是为了完成某项任务(例如聊天、听音乐)而使用某种编程语言(例如C/C++)编写的一组指令序列。
而指令是计算机程序控制的最小单位,由操作码和操作数组成,操作码是计算机要执行什么操作,例如加减乘除操作,而操作数具体执行的对象,具体的数据以及数据的位置。
所有指令的集合称为指令系统,常见的PC机指令系统有Intel X86指令集,常见的手机指令系统有ARM,因此手机上的程序不加修改是不能直接在PC机上运行,因为不同的指令集是不兼容的。
那么计算机是如何处理程序的?
根据冯诺依曼计算机结构的原理,计算机的工作流程大致如下
- 当用户从计算机中打开程序时(鼠标点击桌面的快捷方式图标),程序开始执行。
- 操作系统将程序的内容和相关的数据传送到内存中。
- CPU根据程序内容从内存中读取指令。
- CPU分析、处理指令,并为下一条指令做准备
- 取下一条指令并分析、处理,如此重复操作,直到执行完程序中的全部指令,最后将计算的结果放到指令指定的存储器地址中。
以网易云音乐播放音乐为例子
- 用户双击网易云应用程序播放音乐
- 网易云应用程序的指令和数据加载到内存
- CPU从内存中读取并分析指令然后通过操作系统调用驱动程序
- 驱动程序调用声卡播放音乐
1.4 编程语言发展史
任何事物都是从无到有,逐步发展壮大起来的,编程语言也是一样。
计算机程序设计语言经历了机器语言到汇编语言和高级程序设计语言三个阶段,其特点是使得程序员用编程语言开发、测试、部署应用程序越来越方便、高效。但是是以牺牲效率为代价,但是随着计算机硬件的发展,绝大多数应用场景的效率损失可以忽略不计。
- 机器语言
计算机发展的最早期,程序员编写程序采用二进制的指令(010010101)来实现的,而每种CPU都有各自不同的指令系统(Ultra SPARC/Intel X86/ARM),因此在不同的机器上使用不同的机器语言实现。其特点是性能特别高效,而面向机器编程也就意味着不能移植,需要手动处理底层硬件的差异性,而且二进制的指令难以理解和维护。 - 汇编语言
随着时代和计算机技术的发展,汇编语言和编译器的出现解决了机器语言需要记住非常多的二进制机器指令的难题,但是还是没有从根本上解决移植性的问题,只是将机器指令转换为易懂的英文单词,然后由编译器编译成机器指令,因为计算机终归揭底只能识别二进制的0001110100110机器指令,而且汇编语言是面向机器的,不同机器(SPARC/Intel X86/ARM)的汇编指令是不相同的。 - 高级程序设计语言
高级程序设计语言的高级之处体现在开发人员在编写程序时无需关心计算机底层硬件差异而只需要专注于业务模块实现即可。甚至是可以实现 一次编译,到处运行,这里以Java为例子:通过实现不同平台的JVM,编译生成的字节码文件可以在任意的JVM上运行。
高级语言通常都需要编译器或者是解释器将源码编译或者解释后执行。
高级语言主要分为面向过程和面向对象两种,其中典型的面向过程编程语言就是C,面向对象的编程语言有Java,C++等等。
1.5 计算机语言应用场景
如果想知道目前主流的编程语言有哪些,可以访问tiobe 首页获取编程语言排行榜。
根据Tiobe排行榜得知,Java/C/Python分别排在前三名, 随后紧跟着C++,C#等等。
编程语言 | 应用场景 |
---|---|
C | 硬件驱动、操作系统、系统软件 |
C++ | 系统软件、网络通讯、科学计算 、游戏 |
C# | Windows应用,Web应用、游戏 |
Java | 大型互联网应用(淘宝、天猫),Android,大数据 |
Go | 高并发、区块链、微服务 |
Kotlin | Android应用开发 |
Swift | macOS,iPhone,iPad应用开发 |
Python | 人工智能、机器学习、自动化运维、数据分析 、图形处理 |
JavaScript | 浏览器端、服务端、PC桌面 |
Scala | 大数据开发 |
那么如果你作为初学者,面对如此之多的编程语言,到底应该先从哪门语言上车呢?如果你想深入的学习其他语言和架构相关的知识之前建议熟练掌握C语言。因为C++/Java/C#等编程语言都模仿了C语言。无论哪种语言,都是实现目标的工具,而不是目标本身。
而不出意外的话,我的全栈之路系列会覆盖上述的十种编程语言,实现全平台开发。
1.6 Python概述
1.6.1 Python发展历史
Python是荷兰的Guido von Rossum(吉多·范·罗苏姆,中国Python程序员都叫他 龟叔)在1991年使用C实现的一门高级编程语言,并且能够调用C语言的库文件,介于C和Shell之间功能强大,易学易用,可扩展的语言。
Python目前(2019/09/01)有两个版本,分别是Python2.x和Python3.x,Python3.x是不兼容Python2.x。
目前企业开发新项目时应该尽量采用Python3.x,因为Python2.x只维护到2020年,而且一些基于Python的框架都逐渐转移到了Python3.x。目前最新版本的Python3.x是Python3.7.4,后续所有的Python应用都是基于该版本编写,而最新版本的Python2.x是Python2.7.16,也是2.x系列最后一个版本。
1.6.2 Python的特点
Python有着简单易学、开源免费、良好的移植性(支持macOS,Linux,Windows..)、扩展性强(调用C/C++代码)、丰富的库函数,代码风格优雅(强制缩进)、解释型(逐行运行)、开发效率高等优点。
但是也存在着和其他解释型语言一样的缺点:运行效率慢,但是目前计算机硬件性能的提升弥补了这个缺点。
1.6.3 Python的应用场景
Python目前广泛用于基于B/S架构的Web应用开发(电商、金融)、自动化运维、自动化测试、网络爬虫、数据分析、人工智能、大数据开发等应用场景。
国外Google,Facebook,Dropbox等公司,国内的知乎、春雨医生、百度、腾讯、阿里巴巴都大量使用了Python。
1.7 Python开发环境搭建
1.7.1 Python解释器概述
在开发Python程序之前,首先要从官网下载Python解释器,它的作用就是解释并运行开发人员针对Python解释器编写的Python程序。也就意味着如果没有Python解释器,Python程序是无法独立在操作系统上运行。
因为计算机无法直接识别开发人员编写的程序,需要借助Python解释器来将源程序翻译成计算机识别的二进制指令并逐行解释执行程序,Python解释器同时提供了强大的库函数给开发者调用,提高开发效率。
Python的解释器如今有多个语言实现,我们常用的是CPython(官方版本的C语言实现),其他还有Jython(可以运行在Java平台)、IronPython(可以运行在.NET和Mono平台)、PyPy(Python实现的,支持JIT即时编译)
1.7.2 Python解释器下载
首先去官网下载Python解释器,由于Python是跨平台的,官网提供了Windows,Linux,macOS等平台的解释器,
我这里就选择Windows版本
但是官网同时提供了Windows 32位和64位,我这里就选择64位Windows版Python解释器
当点击下载链接之后Chrome会自动下载Python-3.7.4-amd64.exe
1.7.3 Python解释器安装
首先在Chrome的下载窗口中直接点击之前下载的python-3.7.4-amd64.exe,在出现打开文件-安全警告后点击运行。
设置安装路径和将Python3.7添加到Path环境变量中
Python在Windows上安装的默认路径是C:\Users{user.name}\AppData\Local\Programs\Python\Python37中,其中{user.name}替换成你的账户名即可。
当启动安装程序时,Windows10系统会弹出一个用户账户控制的窗口,提示"你要允许此应用对你的设备进行更改吗",这里选择用鼠标点击是,就可以开始进行安装了。
这里选择默认安装,并且将Python3.7添加到系统环境变量中,那样在安装完成后可以在终端中使用Python
安装中
当Python安装成功之后,便可以在命令提示符窗口中输入python命令进入python解释器,然后使用print("hello world") 向控制台打印输出hello world
1.8 使用Visual Studio Code开发Python程序
1.8.1 Visual Studio Code下载和安装
Visual Studio Code是微软公司推出的跨平台编辑器,可以用来编写C/C++/Java/Python/Go等程序。
首先去官网下载Visual Studio Code
然后安装,在Chrome的下载窗口中打开安装程序 VSCodeUserSetup-x64-1.37.1.exe时,会弹出
打开文件-安全警告,此时点击运行即可开始安装
安装程序Visual Studio Code
此时已经完成安装,然后会自动启动Visual Studio Code
1.8.2 Visual Studio Code编写、运行Python程序
在Visual Studio Code启动后,首先选择D:\code\python作为Visual Studio Code工作区的文件夹
Visual Studio Code内置了Python的支持,只需要点击右上方的运行按钮就可以直接解释运行Python程序
1.9 Pycharm开发Python程序
1.9.1 Pycharm介绍
Pycharm是Jetbrains公司开发的一款跨平台的Python集成开发环境,在企业日常开发中通常使用它作为首选的Python开发工具。PyCharm提供智能代码完成,代码检查,动态错误突出显示和快速修复,以及自动代码重构和丰富的导航功能。PyCharm为现代Web开发框架提供了特定于框架的支持,例如Django,Flask,Google App Engine,Pyramid和web2py。PyCharm与IPython Notebook集成,具有交互式Python控制台,支持Anaconda以及matplotlib和NumPy等多种科学软件包。除了Python之外,PyCharm还支持JavaScript,CoffeeScript,TypeScript,Cython,SQL,HTML / CSS,模板语言,AngularJS,Node.js等。
使用远程解释器,集成的ssh终端以及Docker和Vagrant集成,在远程主机或虚拟机上运行,调试,测试和部署应用程序。开箱即用的大量工具:集成的调试器和测试运行器; Python探查器;内置终端;并与主要的VCS和内置数据库工具集成。
1.9.2 Pycharm安装
首先去Pycharm官网下载Pycharm安装包,目前版本为pycharm-professional-2019.2.1.exe
当点击Download按钮后,Chrome会自动下载Pycharm
当下载完成之后便可以点击pycharm-professional-2019.2.1.exe进行安装了 ,期间系统会提示打开文件-安全警告,这里点击运行即可。
然后系统会弹出一个用户账户控制的窗口,提示"你要允许此应用对你的设备进行更改吗",这里选择用鼠标点击是,就可以开始进行安装了。
Windows版本Pycharm2019.2.1安装
1.9.3 Pycharm首次启动设置
当Pycharm首次安装完成以后,会提示导入设置,我这里就选择 Do not import settings
选择插件
如果你对VIM和Markdown感兴趣可以安装和启用这两个插件
激活Pycharm
Pycharm是收费的IDE,可以选择30天免费使用或者是使用Activation code、License server,Jetbrains Account三种方式激活,如果大家经济条件允许,还是推荐购买正版软件。
Create New Project 用于创建新Python项目
Open用于打开之前已经创建的项目
Check out from Version Control用于从版本控制系统(例如Git)中克隆项目到本地,企业级项目开发都是使用Git来统一管理项目的源码。
Configure 用于Pycharm相关配置,例如主题、字体大小、Python解释器等等。
1.9.4 使用Pycharm开发Python程序
首先启动Pycharm,然后选择Create New Project
然后设置项目的路径以及Python解释器的安装路径,如果在安装Python解释器时没有改变默认路径,Pycharm会到默认的路径下寻找解释器。
项目概览
当项目创建成功时,Pycharm会弹出Tip of day,如果想下次不再弹出。把Show tips on startup的单选框去掉选中。
还有个警告,这里点击Fix和Configure Automatically就行。
然后系统会弹出一个用户账户控制的窗口,提示"你要允许此应用对你的设备进行更改吗",这里选择用鼠标点击是,就可以开始编写Python程序了
工程创建完成之后,可以选中项目python-core-programming,然后使用菜单New->Python File创建一个Python文件
然后设置文件名为helloworld,python源程序的默认文件名后缀是.py
然后在helloworld.py文件中编写如下内容
print("Windows10 1903 & Pycharm2019.2.1 Hello World")
程序编写完成以后Pycharm会自动保存
然后鼠标右键Run 来运行Python程序
运行和调试Python
当首次使用右键菜单Run运行Python成功之后,Pycharm右上角会出现运行和调试Python程序的按钮。
在编写第一个Python程序时还需要注意以下几点
- Python源文件的行首不能有空格。
- Python区分大小写,print和Print是不同的涵义。
- Python源文件的标点符号必须是英文的
- Python源文件的每条执行语句独立占用一行,不需要使用分号结束语句
1.10 注释
注释是用于描述程序功能的说明信息,添加注释的目的是为了提高程序的可读性以及便于后期的维护,注释的内容在解释时会被Python解释器忽略,不会被解释执行。
Python中的注释分为单行注释、多行注释两种。
其中单行注释 注释的内容只能写在一行,通常在代码的上方或者右方,使用#开头,再加上一个空格,#后面写解释说明的文字。
Pycharm中可以使用快捷键Windows(Ctrl+l)macOS( command+/ )添加或者删除单行注释
# 调用Python解释器自带的打印功能向控制台输出 macOS10.14.5 & Python3.7.4 & Pycharm 2019.2.1 Hello World
print("macOS10.14.5 & Python3.7.4 & Pycharm 2019.2.1 Hello World")
# 注释的代码不会执行
# print("macOS10.14.5 & Python3.7.4 & Pycharm 2019.2.1 Hello World Again")
# 多行注释的两种方式
'''
跟磊哥实战Python+Web,Python+自动化运维,Python+人工智能
人生苦短,我用Python
'''
"""
Python开发效率高于Java,同样可以跨平台,但是运行效率低于Java
中小型互联网公司推荐使用Python开发Web应用
"""
如果想要在源文件中注释多行内容,或者添加多行说明信息,可以使用多行注释实现,Python的多行注释使用 三对双引号(""" """)或者三对单引号(''' ''')实现,与单行注释不同的是多行注释只能添加到代码的上方,不能添加源文件代码的右方。
在日常开发中,如果业务逻辑比较复杂时可以添加适量的注释,程序调试时也可以添加注释来排除错误。