1.python简介:介绍python到底是一门什么样的语言,介绍python的基础特点
python是一门功能强大的,是一种面向对象的动态、强类型、解释型的高级的程序设计语言,也是一种胶水语言,它具有跨平台型、健壮性、易学易用等特点。
上面一句话中有以下几个关键字:功能强大 面向对象 动态 强类型 解释型 高级的 程序设计语言 胶水语言 跨平台型 健壮性 易学易用, 下面我就来一步一步解释这些名词:
(1)功能强大 : python的用途广泛,就我所知道的python有如下的应用---- web开发,爬虫,数据处理,云计算,人工智能(AI),系统运维,金融,图形界面开发等等
web开发 :
python有如下的web框架:Django、Flask、Tnornado。
Django是广泛应用的企业级web框架,使用Django自身就可以开发出一些很完整的web应用,正因为如此,Django在企业级web开发中有举足轻重的地位。
Flask是一个比较新的框架,2010年出现,Flask主要应用与微小项目,同时它具有可拓展性,可以让开发者自由选择数据库存储数据,Flask是一个面向简单需求和小型应用的微框架。
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。Tornado常常被作为大型站点的接口服务框架,而不像Django那样被用于建立完整的大型网站。
爬虫 :
爬虫(又被称为网络爬虫,网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。python中具有专门的模块来访问互联网发送请求,比如说最基本的urllib模块,还有一些第三方库比如说requests模块。python中也有可以解析网页源代码的第三方模块,比如BeautifulSoup库。
数据处理 :
python中有数据处理的一些模块,比如说Numpy、Pandas、Matplotlib。
NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多。 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法,是使Python成为强大而高效的数据分析环境的重要因素之一。
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,可以将数据可视化。
云计算 :
python在此领域中也有应用,并且地位很高,著名的OpenStack就是由python开发的,OpenStack是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。并且OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
人工智能(AI) :
python中有很多第三方模块适合做人工智能,比如numpy, scipy做数值计算的,sklearn做机器学习的,pybrain做神经网络的,matplotlib将数据可视化。
系统运维 :
毫无质疑python是业界的运维工程师必会的编程语言。
金融 :
量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。
原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测。
图形界面开发 :
Python支持多种图形界面的第三方库,包括:PyQT, WxPython,TkInter等等。
Tkinter是Python自带的库,使用Tkinter,无需安装任何包,就可以直接使用。
Qt是一个C++编写的跨平台开发框架,Qt已经存在很久,一度属于诺基亚公司,作为一个非常全面的工具代码库和API,被大量行业广泛采用,覆盖包括移动在内的多个平台。PyQt是一个创建GUI应用程序的工具包。它是python程语言和Qt库的成功融合。Qt库是目前最强大的库之一。
wxPython是Python语言的一套优秀的GUI图形库。允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的。
(2)面向对象:面向对象是一种程序设计思维,也是一种软件开发方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物,也是一种程序设计思维。面向对象是将客观事物看做具有属性和行为的对象,
通过对客观事物的抽象找出同一类对象的共同属性(静态属性)和行为(动态特征),形成类。每一个对象都有自己的数据,操作、功能和目的。通过类的继承和派生、多态等技
术来提高软件代码的可重用性。面向对象程序设计思维更接近于人的思维活动,按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世
界,分析、设计、实现软件的办法,通过面向对象的理念,使计算机软件系统能与现实世界中的系统一一对应。
(3)动态:静态和动态对应,分别是静态类型语言、动态类型语言,是对类型的检查的时期而言。
静态类型语言是指在编译时变量的数据类型即可确定的语言,静态类型语言的数据类型检查是在运行前判断(如编译阶段),比如C、C++、C#、java就是静态类型语言,而动态类型语言却不需要像静态类型语言要求在使用变量之前必须声明数据类型,动态类型语言类型的数据类型检查是在运行时做的,变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
(4)强类型:强类型和弱类型是指程序设计语言的数据类型定义。
强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
(5)解释型:解释型和编译型对应,是一种编程语言翻译的方式,通过这些方式编程语言转换成计算机能直接运行的机器码
编程所用的高级语言是不能被计算机直接理解的,必须通过一定的手段翻译成机器语言,只有这样计算机才能运行高级语言所编写的程序。而翻译的方式有两种,一种是编译型,另一种是解释型。
编译型是指把源程序用编译器一次性都编译成机器语言,并保存为二进制文件,然后计算机可以直接执行 eg: C、C++、GO、Swift、Object-C、pascal
解释型是指源代码不是直接翻译成机器语言而是使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行 eg: python、javascript、ruby、php、Perl、VBScript这两种方式均有各自的优缺点:
编译型语言:
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型语言:
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机),灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
混合型语言: 其实就是结合上述两种翻译方法推出的语言 eg:Java、C#
Java: Java程序在Java平台上被编译为中间代码(字节码格式),在运行时,通过Java虚拟机执行字节码,把字节码解释成具体平台上的机器指令执行Java结合了编译和解释过程。Java源程序首先被编译成class文件,然后,由虚拟机(jvm)对class文件加以解释执行,这就是Java的能够“一次编译,到处运行”的原因
C#:与Java类似,它被编译成为中间代码,然后通过.NETFramework的虚拟机——被称之为通用语言运行库(CLR)——执行。 所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行
(6)高级的:python的高级性不是相对汇编语言,而是相对C、C++、Java等高级语言而言的。
python在语言层面对开发者提供了更强大的支持。任何具有一定规模的应用程序都需要使用到链表、字典等数据结构,在python中,内建了List、Set、Dictionary这些数据结构,可以直接使用。在python的核心语言中提供这些重要的构建单元,可以鼓励人们使用它们,缩短开发时间和代码量,生产出可读性更好的代码。而在C++等语言中,这些数据结构一般需要通过附加的标准库来实现。
(7)程序设计语言: 程序设计语言就是用来写程序的代码的语言,计算机是由软件和硬件组成的,而软件又是由代码和文档组成的,程序设计语言可以理解为一种规则,一种编写人能够易于理解的代码的规则。代码通过某种方法(上面的编译和解释)和计算机沟通,向计算机发出指令,控制计算机进行一系列的操作。
(8)胶水语言: 胶水语言是指用来连接软件组件的程序设计语言,通常指脚本语言。
Python可以把C++、Java写的模块轻松结合起来协同,这样就能把c++的针对底层,java的面向对象两大优势统一到一个完整的程序中来。python可以像一个八爪鱼连接各种主要的技术标准,比如说Shell Command、Windows DLL 和 WebService。在B/S架构大行其道的今天,曾经出现过几十个python的web开发框架,发展到现在已经形成了Django、Tornado等成熟的框架。
(9)跨平台型 : 跨平台指程序语言可以在多种操作系统的电脑上运作,而不需要去修改代码。
操作系统主要有3种:Windows、Linux、Mac,它们之间的优劣性现在大概就是如下:Windows客户端简单易用,Linux胜在稳定性,Mac提供更好的用户体验。python在各平台上都实现了解释器,使得python程序可以运行在不同的操作系统平台上。
(10)健壮性 :所谓健壮性是指对于一些不规范的输入能够判断这个输入是不符合规范要求的,并有合理的处理方式。
python的强类型机制、异常处理、垃圾的自动回收机制等是其程序健壮性的重要保证。使用python的开发者不用在资源申请、回收等方面花费太多精力。
(11)易学易用:python的设计哲学是:优雅、明确、简单。
由于python语言的简洁、易读及拓展性,在国外用python做科学计算的研究机构日益增多,一些知名大学开始采用python来教授程序设计语言,比如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用python语言讲授。众多开源的科学计算软件包都提供了python的调用接口,比如说著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。
一个重要的问题----关于python2与python3:
python2和python3是python的两个版本,python2已经存在长达20多年,在第三方库的支持上做的很好,python3是最近10年时间慢慢推出、兴起的新版本,官方解释python3是未来的趋势,且不再更新python2,作为一个coder不管自己学什么版本,对另一个版本都应该有一点的了解,我个人是看好未来的趋势,所以使用的是python3,但是以后工作中也许会遇到一些项目是用python2写的,所以python2也有了解。比如说:python2中的字节字符串(str)和python3中的字节字符串(bytes)之间有着功能上的差异;print在python2中被视为一个语句,而在python3中被视为一个函数;除法不一样,python2: 5/2 = 2 python: 5/2 = 2.5; 编码上,Python 2 默认使用 ASCII ,而python3使用Unicode。
2.python安装:介绍python的安装以及环境的配置(注:这里我安装的是python3的最新版本3.7.0)
只有安装python环境后,python程序才能运行,以下是安装python环境的步骤:
(1)去python的官网中的下载页面下载python安装包 网址: https://www.python.org/downloads/, 根据你的操作系统选择
(2)选择操作系统后进入下一个页面,选择相应的安装包,我自己电脑是Windows系统,如下我选择了该安装包
(3)官网的下载速度真的是很慢,嫌官网下载慢的可以使用我分享的安装包下载:链接:https://pan.baidu.com/s/1kXmqqJt 密码:t0c8
(4)现在来开始安装:
点击安装包,然后先把下面的两个选项选中,再点Install Now。关于Add python to path是指把python程序添加进系统变量,以便在命令行中解释运行python。python3中在安装的时候就可以直接把python添加进环境变量中,而python2则不能直接添加,必须手动添加。
安装完成:
检测安装是否成功以及python是否添加进系统变量中:同时按win键和r键,在弹出的运行窗口输入cmd,在cmd中输入python,出现以下类似的画面表明成功
3.python开发工具的介绍及安装及设置
python下载后就自带了一个官方的IDE,如下图:
官方的IDE我个人觉得不是很好用,所以在此推荐大家学习python时初期可以使用,但是入门后最好使用pycharm这款IDE,pycharm是一颗功能强大的IDE,具有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成等功能,下面就来介绍pycharm的安装。
注:关于pycharm,也和python一样有两个版本,一个是社区版,一个是专业版,社区版免费,但是能做的事情比较少,专业版要收费,但是做的事情比较多,也可以破解。在此我安装的是专业版,因为个人的一些项目需要专业版。
Pycharm安装的步骤如下:
(1)登陆官网下载安装包,官网链接: https://www.jetbrains.com/pycharm/ 官网是国外的网站,下载比较慢, 嫌官网下载慢的可以使用我分享的安装包下载: 链接:https://pan.baidu.com/s/1nw15cnf 密码:089v
(2)点击安装包开始安装,点击Next,继续安装:
(3)选择安装位置,点击Browse..即可更换安装位置,我个人是把pycharm安装在非系统盘D盘,选好安装位置后,点Next,继续安装
(4)如下图勾上这些选项,点击Next,继续安装
(5) 下图保持默认即可,点击Install,继续安装
(6)安装完成如下,点击Run Pycharm, 再点击Finish,我们来看一下最后的安装效果
(7)这时,安装完成后打开的画面如下,选择下面的选项,然后点击OK继续
(8)接下来就需要输入激活码,如下图选择即可通过激活:
(9)下来就进入pycharm的欢迎界面中,在这里直接点击OK进入pycharm即可,也可以进行一些设置。
(10)接下来就是pycharm的创建项目页面,最左边一排是项目种类,创建项目的时候选择合适的种类,在右边是项目位置的设置和解释器的设置
(11)进入pycharm中,设置的方法,点击File,再点击Settings,即可进入设置页面:
设置页面如下:
(12)下面介绍一些使用的Pycharm技巧:
技巧一:设置创建文档开头打上固定的一句话: 比如说 __author__ = ‘somebody‘ (somebody为某人的名字,你可以写上自己的名字), 这里以python文件为例
进入如下页面,选择如下,写下下列代码即可:
此时再创建一个python文件,即会在开头自动加上作者名和日期,如下:
技巧二:用python来下载第三方包,进入settings页面选择如下,点击右方的+号
点击加号之后,出现下面的页面,在上方输入包名,找到包之后点击Install Package安装即可,注意请勾上Install Package上面的选项
示例: