python的创始人、特点应用领域_python学习笔记(python发展介绍)

一、python介绍

python的创始人为吉多・范罗苏姆(Guido van Rossum)

目前python主要应用领域:

・云计算

・WEB开发

・科学运算、人工智能

・系统运维

・金融:量化交易,金融分析等,作为动态语言的python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛

・图形GUI

python是一门什么样的语言?

编程语言主要从以下几个角度进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言。

编译型和解释型

编译型,如:c,c++,其实它和汇编语言是一样的:也是有一个负责范怡的程序来对我们的源代码进行转换,生产相对应的可执行代码。这个过程说得专业一点,就成为编译(Compile),而负责编译的程序自然就成为编译器(Compiler)。如果我们写的程序代码都包含在一个源文件中,那么通常编译之后就会直接生成一个可执行文件,我们就可以直接运行了。对于较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Object file)而不是前面说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上已经是可执行代码了,但由于只是整个项目的一部分,所以我们还不能直接运行。待所有的源文件的编译都大功告成,我们就可以最后把这些半成品的目标文件“打包”成一个可执行文件了,这个工作由另一个程序负责完成,由于此过程好像是把包含可执行代码的目标文件连接装配起来,所以又称为链接(Link),而负责链接的程序就叫链接程序(Linker)。链接程序除了链接目标文件外,可能还有各种资源,像图标文件、声音文件等,还要负责去除目标文件之间的冗余重复代码,等等……链接完成之后,一般就可以得到我们想要的可执行文件了。

解释型,从字面上看,编译和解释都有翻译的意思,它们的区别则在于翻译的时机安排不大一样。打个比方:阅读一本不懂的外语书,可以找一个翻译,给他足够时间从头到尾把整本书翻译好,然后把母语版书给你阅读;或者,让翻译一句一句给你翻译,如果想往回看某个章杰,他也得重新给你翻译。

两种方式,前者就相当于编译型:一次把所有 代码转换成机器语言,然后写成可执行文件;而后者就相当于解释型:在程序运行的前一刻,还只有源程序而没有可执行程序;而程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行……所以,解释型程序是离不开解释程序的。像早期的BASIC就是一门经典的解释型语言,要执行BASIC程序,就得进入BASIC环境,然后才能加载程序源文件、运行。

解释型语言注定比编译型语言慢,某些情况下甚至会慢几百倍。

编译型与解释型,两者各有利弊。前者执行速度快,同等条件下对系统要求低,因此像开发操作系统、大型应用程序、数据库系统等时采用。像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可视为编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释型语言,如JAVA、JavaScript、VBScript、Perl、Python等。

编译型和解释型各有优缺点又相互对立,所以一批新兴的语言都有把两者折衷起来的趋势,例如JAVA语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介于机器码和JAVA源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。而像VB6(或以前版本)、C#这样的语言,虽然表面上看生成的是.exe可执行程序文件,但VB6编译之后实际生成的也是一种中介码,只不过编译器在前面安插了一段自动调用某个外部解释器的代码(该解释程序独立于用户编写的程序,存放于系统的某个DLL文件中,所有以VB6编译生成的可执行程序都要用到它),以解释执行实际的程序体。 C#(以及其他.net的语言编译器)则是生成.net目标代码,实际执行时则由.net解释系统(就像JVM一样,也是一个虚拟机平台)进行执行。当然.net目标代码已经相当“低级”,比较接近机器语言了,所以仍将其视为编译语言,而且其可移植程度也没有JAVA号称的这么强大,JAVA号称“一次编译,到处执行”,而.net则是“一次编码,到处编译”。总之随着设计技术与硬件的不断发展,编译型与解释型两种方式的界限正在不断变得模糊。

动态语言和静态语言

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

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

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

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

强类型定义语言:强制数据类型定义的语言。一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。强类型语言是类型安全的语言。

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

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

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

python是一门动态解释型的强类型定义语言

python的优缺点

优点:

python的定位是“优雅”“明确”“简单”,所以python程序看上去总是简单易懂

开发效率非常高,python有非常强大的第三方库

高级语言

可移植性――如果你小心地避免使用依赖于系统的特性,那么你的所有python程序无需修改就几乎可以在市场上所有的系统平台上运行

可扩展性――如果你需要你的一段关键代码运行的更快或者希望某些算法不公开,你可以把你的部分程序用C或者C++写,然后在你的python程序中使用它们

可嵌入性

缺点:

速度慢,大多情况下用户是无法直接感知到的,比如C运行一个程序花了0.01秒,python是0.1秒,这样C语言直接比python快了10倍,算是非常夸张了,但是无法直接通过肉眼感知到,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右。其实大多情况下python一句完全可以满足对程序速度的要求

代码不能加密,因为python是解释型语言,它的源码都是以明文形式存放的

线程不能利用多CPU问题,这是python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,python的线程是操作系统的原生线程。在linux上为pthread,在windows上为wthread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。

python解释器

当我们编写python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件。要允许代码,就需要python解释器去执行.py文件。

CPython:最广泛使用的解释器。教程中的所有代码都在CPython下执行。

IPython:基于CPython上的一个交互式解释器

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

Jython:是运行在JAVA平台上的python解释器

IronPython:和Jython类似,是运行在微软.net平台上

二、python发展史

・1989年,Guido开始写python语言的编译器

・1991年,第一个python编译器诞生。

・python 2.0 - October 16,2000

・python 2.6 - October 1,2008 过渡版本

・python 2.7 - July 3,2010 过渡版本

・python 3.0 - December 3,2008

In November 2014,宣布,python 2.7版本会支持到2020年,不会有2.8版本。

三、python 2 or 3?

python 2.x是过去式,python 3.x是现在和未来的语言

所有的标准库的更新只会在3.x版本中

Unicode的支持

程序员能感知的变化:

还有谁不支持python3?

twisted

python安装:略。

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

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

相关文章

kubernetes ui 搭建

1、部署Kubernetes云计算平台,至少准备两台服务器,此处为3台 Kubernetes Master节点:192.168.0.111 Kubernetes Node1节点:192.168.0.112 Kubernetes Node2节点:192.168.0.113 2、每台服务器主机都运行如下命令 system…

[html] 你喜欢哪种布局风格?说说你的理由

[html] 你喜欢哪种布局风格?说说你的理由 flex个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...

异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值 原因: 如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。 Response.End 方法终…

[html] 移动端如何让页面强制横屏显示?

[html] 移动端如何让页面强制横屏显示? 说个想法 不一定能实现web端的话 通过判断页面屏幕宽度(这个得开陀螺仪权限吧) 然后经行div旋转个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷…

多项目加载顺序修改_React推出并发模式:可中断渲染、指定加载顺序、并行处理多状态...

警告:本文档介绍的实验功能在稳定版本中尚不可用。不要在生产应用程序中依赖 React 的实验性构建。这些功能可能会发生重大更改,而且直到功能成为 React 的一部分之前这类更改都不会发出警告。本文档面向早期使用者和对此感兴趣的用户。如果你不熟悉 Rea…

[html] 制作一个多选的下拉框

[html] 制作一个多选的下拉框 定义盒子 a标签 绑定事件个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

好东西仿Vista窗体

这是在网上看到的&#xff0c;然后改了一下&#xff01; 很好调用&#xff01;&#xff01;&#xff01;&#xff01; <SCRIPT src"_Window.js" typetext/javascript></SCRIPT> 窗体类 <SCRIPT src"index.js" typetext/javascript> /…

同步考勤数据 钉钉_作为学校,我为何选择微校wxiao考勤打卡?

随着移动互联网的兴起&#xff0c;越来越多的中小学摒弃了传统纸质考勤方式&#xff0c;采用智能考勤。目前&#xff0c;最常用的智能考勤方式可分为基于非移动端和移动端两种。其中&#xff0c;基于非移动端的包括人脸识别、指纹识别、虹膜识别考勤方式&#xff0c;基于移动端…

Guitar Por如何演奏刮弦

每当我们听到吉他现场演出的时候&#xff0c;看到吉他手在激烈的刮弦时&#xff0c;都觉得很酷&#xff0c;非常有感染力。刮弦在我们弹吉他或编曲时&#xff0c;会经常用到&#xff0c;虽然时间很短&#xff0c;但会为你加分不少。 那么我们应该如何演奏刮弦呢&#xff0c;我们…

[html] HTML全局属性(global attribute)有哪些(包含H5)?

[html] HTML全局属性(global attribute)有哪些&#xff08;包含H5&#xff09;&#xff1f; classiddatatypehrefstylewidthheighttargecheckeddisabledrequierefalttitlenamemulitp...多选valuereplaceholdersrc个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。…

3.6-3.8 分布式环境启动、测试

一、HDFS1、初始化文件系统#master上 [rootmaster hadoop-2.5.0]# pwd /opt/app/hadoop-2.5.0[rootmaster hadoop-2.5.0]# bin/hdfs namenode -format #最后几行看到successfully&#xff0c;代表成功2、启动#启动 [rootmaster hadoop-2.5.0]# sbin/start-dfs.sh集群批量命令…

unity 日志级别_【Unity】通用的Debugger日志模块

usingSystem;usingSystem.IO;namespaceUnityEngine{/// ///系统日志模块/// public classDebugger{public static bool EnableLog; //是否启用日志&#xff0c;仅可控制普通级别的日志的启用与关闭&#xff0c;LogError和LogWarn都是始终启用的。public static bool EnableTime…

[html] html的元素有哪些(包含H5)?

[html] html的元素有哪些&#xff08;包含H5&#xff09;&#xff1f; 块级元素&#xff1a;head -meat - 申明页面的诸多属性title - 窗口标题style - 样式body - 文本内容header - 头部块section - 内容块footer - 底部块article - 文章标签asidenavmenubirhr - 下划线h1-h6…

LINQ - 對付 SQL Injection 的 免費補洞策略 (转)

LINQ - 對付 SQL Injection 的 "免費補洞策略" LINQ - 對付 SQL Injection 的 "免費補洞策略" 作者&#xff1a;黃忠成 一連串的 Mass SQL Injection 攻擊&#xff0c;讓我們回憶起數年前的 SQL Injection 攻擊&#xff0c;多年後的今天&#xff0c;我們仍…

【BZOJ2054】疯狂的馒头(并查集)

/* 经典思路&#xff0c; 倒序并查集处理即可*/#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<iostream> #define ll long long #define mmp make_pair #define M 1000010 using namespace std; int read()…

[html] 渐进式渲染是什么?

[html] 渐进式渲染是什么&#xff1f; 渐进式渲染指在做浏览器兼容时&#xff0c;先兼容最低版本&#xff0c;保证基本功能&#xff0c;然后再在高级浏览器上做优化个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎…

mysql int()_简单谈谈MySQL中的int(m)

我们在设计表的时候&#xff0c;如果碰到需要设置int(整型)的时候&#xff0c;通常会按照惯例(大家都这样写)设置成int(11)。那么这里为什么是11呢&#xff1f;代表的又是什么呢&#xff1f;以前我一直以为这里是在限制int显示的宽度&#xff0c;后来仔细研究和通过上网查询发现…

Visual Studio .Net团队开发[转]

一、 开发前的准备1、 在装有Windows 2000或者Windows XP Professional的机器上安装.net Framework SDK、Visual Studio.Net、Visual Source Safe 6C。&#xff08;如果用户操作系统是Windows .Net Server&#xff0c;则无须安装.Net Framework SDK&#xff0c;.Net Server自带…

mysql数据库root密码在哪个文件中_mysql - 本地数据库忘记了root用户的密码

在连接本地mysql数据库一直都是客户端保存密码&#xff0c;然后一键登录。突然开发要用到这个数据库时&#xff0c;脑子嗡嗡的了……忘记了密码&#xff0c;试了很多遍还是记不起来。没办法只能去找方案了&#xff0c;网上还是有很多跟我一样的大佬的。这里记录下&#xff0c;省…

[html] Form表单是怎么上传文件的?你了解它的原理吗?

[html] Form表单是怎么上传文件的&#xff1f;你了解它的原理吗&#xff1f; 简单来说就是把文件转化成字节流&#xff0c;然后使用http进行传输&#xff0c;后端接受后在把二进制转化成原先的文件格式。在HTML表单中&#xff0c;可以上传文件的唯一控件就是<input type&qu…