python历史背景_python学习之旅1-1(python背景、安装介绍)

一、python介绍

1.python历史背景

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

Granddaddy of Python web frameworks, Zope 1 was released in 1999

Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础

Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生

Python 2.5 - September 19, 2006

Python 2.6 - October 1, 2008

Python 2.7 - July 3, 2010

In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible

Python 3.0 - December 3, 2008

Python 3.1 - June 27, 2009

Python 3.2 - February 20, 2011

Python 3.3 - September 29, 2012

Python 3.4 - March 16, 2014

Python 3.5 - September 13, 2015

Python 3.6 - December 16,2016

2.python语言

机器语言:

特点:计算机能够看懂的0和1去写程序

优点:程序运行速度快

缺点:开发效率低

汇编语言:

特点:用一些英文标签代替一串而精致数字去写程序

优点:比机器语言好一点,操作系统内大量使用汇编语言

比如关于进程的调度代码,就是用汇编语言写的

缺点:开发效率低

高级语言:

特点:用人能读懂的(英文)字符去写程序

优点:开发效率高

缺点:必须经过翻译才能让计算机识别,导致运行速度慢

按照编译的方式分为:

编译型:一次翻译,拿着编译后的结果直接给机器运行

C语言: 编译器:gcc glibc

开发效率低,运行效率高

解释型

Python语言:

CPython

当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结:

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

编译型

优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。

缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型

优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

2.2动态语言和静态语言

通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

2.3强类型定义语言和弱类型定义语言

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!

例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。

通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。

总结:

运行效率从高到低

开发效率从低到高

二、python环境

windows下安装Python(手动添加环境变量)以3.5版本举例:

windows:

windows下安装Python(自动添加环境变量)以3,.5版本的举例:

2,选择版本。

3,自动添加环境变量。

4,更改完成。

5,点击安装即可。

linux:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql使用小技巧_mysql使用小技巧

1.mySql 删除表中大批量的数据假设有一个表(logs)有2000万条记录,我们要在业 务不停止的情况下删除其中status1的所有记录,差不多有1800万条,直接执行 DELETE FROM logs WHERE status1 会发现删除失败,因为lock wait t…

python并行计算_Python并行计算简单实现

multiprocessing包是Python中的多进程管理包.Pool(num)类提供一个进程池,然后在多个核中执行这些进程,其中默认参数num是当前机器CPU的核数.Pool.map(func, iterable[, chunksizeNone])2个参数, 第一个参数是函数, 第二个参数是需要可迭代的变量, 作为参数传递到func如果func含…

为什么链接不上mysql数据库_java链接不上数据库,怎么解决!

居正w去年刚好做过这个,给你贴下我的链接代码try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //加载sqlserver JDBC驱动程序 //Class.forName("org.gjt.mm.mysql.Driver"); System.out.pr…

python transform方法_Python transforms.BboxTransformFrom方法代码示例

# 需要导入模块: from matplotlib import transforms [as 别名]# 或者: from matplotlib.transforms import BboxTransformFrom [as 别名]def _set_lim_and_transforms(self):"""set the *dataLim* and *viewLim*:class:~matplotlib.transforms.Bbox attributes…

java 线程数_在虚拟机中是什么限制java线程数量?这方面涉及哪些调优?

首先要说明一点,Java线程的实现是基于底层系统的线程机制来实现的,程序中开的线程并不全部取决于JVM虚拟机栈,而是取决于CPU,操作系统,其他进程,Java的版本。JVM的线程与计算机本身性能相关。以前写过一个例子&#xf…

世界上最难的视觉图_世界上最长的蛇有多长?四川惊现55米洪荒巨蟒(图)

蛇,一直是站在食物链顶端的致命生物,蟒蛇更是能够吞食人类的恐怖巨兽。网传世界上最长的蛇有500米之长,名为“红海巨蛇”,已被证实为虚假传言,以地球现在的环境是不可能出现如此之大的蛇的。据说四川发现了罕见的55米长…

解析器 java_java 常用的解析工具

这里介绍两种 java 解析工具。第一种:java 解析 html 工具 jsoup第二种: java 解析 XML 工具 Dom4jjsoupjsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似…

python执行oracle命令_如何使用cx\U Oracle运行非查询sql命令?

我正在尝试使用cx\U oracle运行以下命令:beginadd_command_pkg.add_command( command_id > 7,expiry_time > sysdate 7);add_command_pkg.add_command( command_id > 12,expiry_time > sysdate 7);commit;end;这是我的Python代码:^{pr2}$当…

java替换特殊字符_Java StringBuffer替换特殊字符

在本实例中为保证学生输入的 Java 文件名合格,将利用 StringBuffer 类实现对 Java 文件名中的特殊符号进行替换,包括将中文状态下的“。”和全角状态下的“.”替换为英文状态下的“.”。在本例实现过程中主要使用了 StringBuffer 类的字符查找和替换方法…

java反射 数组类型_Java反射-数组

通过反射使用数组有时会比较棘手。特别是需要获得一个特定类型数组的Class对象,如int[]等。本文将讨论如何通过反射创建数组和获得他们的Class对象。注意:本文在阅读Eyal Lupu的博客"Two Side Notes About Arrays and Reflection"后已更新&…

python 最快 因式分解_Python实现的对一个数进行因式分解操作示例

本文实例讲述了Python实现的对一个数进行因式分解操作。分享给大家供大家参考,具体如下:在数学中,我们可能会对一个数进行因式分解,如何用Python来实现呢?以下是某位大佬写的算法,这里拿过来直接用就可以了…

php 比java 快_php比java要快在哪里

php比java要快在哪里一些Java可以做的事情php做不了或者说要借助另外的工具才可以做,要但就开发网站这个事情来说,php确实是要比Java效率高,尤其是相对简单的项目。首先,Java的架构要比Php复杂,先不说各种开发框架&…

斯皮尔曼相关系数_惊艳!JASP相关系数矩阵及热力图

今天起我们新增一个案例数据,犯罪数据。这是mei国50个州关于犯罪率的一组数据,包括人口、面积、收入、文盲率、高中毕业率、霜冻天数、犯罪率共7个指标,现在我们想考察一下州犯罪率和其他因素间的关系。数据视图如下:数据取自《R语…

java io大文件_JavaIO流对大文件进行分割与合并

对于大文件传输不方便时候可以试一下分割之后再操作:package com.lym;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOu…

邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路

题目链接743. 网络延迟时间 题目描述有 N 个网络节点,标记为 1 到 N。给定一个列表 times,表示信号经过有向边的传递时间。 times[i] (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的…

opencv java ubuntu_Ubuntu 16.04配置OpenCV 3.1.0 for Java

我们都知道,OpenCV是基于C的开源计算机视觉库,但是从2.4.4版本开始提供了Java绑定,也就是说,我们也可以使用Java来开发基于OpenCV的计算机视觉应用。目前,最新的版本是3.1.0,在本文中将会介绍如何中Ubuntu …

service 层 拼接的html 代码如何直接返回_字符串拼接,会走StringBuilder 吗?

前言最近在突然想到了String字符串拼接问题,于是做了一个demo测试了一下,到底String类型的字符串在拼接的时候,哪种情况下会走会走StringBulider进行字符串拼接,而哪种情况编译器会对代码进行优化?话不多说&#xff0c…

迁移学习训练集准确率一直上不去_可以提高你的图像识别模型准确率的7个技巧...

假定,你已经收集了一个数据集,建立了一个神经网络,并训练了您的模型。但是,尽管你投入了数小时(有时是数天)的工作来创建这个模型,它还是能得到50-70%的准确率。这肯定不是你所期望的。下面是一些提高模型性能指标的策…

华为云客户端_华为公布云手机计费清单,要不要光刻机也给出了答案

华为云手机一出来,大家的好奇心就上来了。这就是解决华为无芯片的代替方案。纷纷说道,可以绕开光刻机,光刻机瞬间变废铁。当时我还发布过文章分析:现在的云手机只是一个云端应用,并不是真正的云手机。需要在手机或电脑…

java 柱状图 宽度_Java实现 LeetCode 84 柱状图中最大得矩形

84. 柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为…