热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python语言程序的特点_Python语言概述及其运行机制详解

即日起,我们将打开一个新的编程世界的大门——Python语言。Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于

a00c831005f7483ba04a039bfe4055ae.jpg即日起,我们将打开一个新的编程世界的大门——Python语言。Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

首先声明,Python系列博文将参考大量的优秀书籍、网站和博文,博主对其进行精心整理总结,并与大家分享之。Python系列博文包括但不限于以下部分:

Python基础语法全体系:基本数据类型、组合数据类型、程序控制结构、函数式编程、文件IO与文本处理、数据格式化、常用模块、经典题目解析等

Python核心编程:面向对象高级编程、异常处理、正则表达式、网络编程、多线程编程、GUI编程、数据库编程等

博文中有任何错误和不当之处,敬请大家以评论或私信形式告知,谢谢!

文章目录

Python语言简介

Python语言的特点

Python语言不可忽视的问题

Python程序运行机制详解

深入理解 ‘解释与编译’

Python解释器

Python 解释器的几种实现版本

Python语言简介

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。官方宣布,2020 年1月1日,停止 Python 2 的更新。Python 2.7 被确定为最后一个 Python 2.x 版本。现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python 是交互式语言:这意味着,我们可以在一个 Python 提示符 >>> 后直接执行代码。

Python 是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python语言的特点

1、简单易学、可读性高、语法优美:Python遵循"简单、优雅、明确"的设计哲学。在 Python 语言中,采用缩进来标识代码块,通过减少无用的大括号、语句末尾的分号等视觉杂讯,使得代码的可读性显著提高。阅读一段良好的 Python 程序就感觉像是在读英语一样,能够专注于解决问题而非纠结于繁琐的语法结构。

2、开发效率高:Python是一种高级语言,相对于C来讲,牺牲了性能而提升了编程人员的效率。它使得程序员可以不用关注底层细节,而把精力全部放在业务逻辑的实现上。

3、广泛的标准库: Python 语言号称自带电池,寓意是 Python 语言的类库非常的全面,Python的最大的优势之一就是它丰富的库。

4、强大的第三方库、应用领域广泛:Python社区提供了大量的第三方模块,使用方式与标准库类似。功能涵盖计算机视觉、科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统多个领域。

5、互动性:互动性的支持,我们可以从终端输入执行代码并获得结果,互动的测试和调试代码片断。

6、可移植性:基于其开放源代码的特性,Python已经被移植到许多平台。

7、可扩展性与可嵌入性:如果我们需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,那么可以使用C/C++完成那部分程序,然后从Python程序中进行调用。当然,我们也可以将Python嵌入到C/C++程序中,使程序的用户获得"脚本化"的能力。

数据库与GUI编程:Python提供所有主要的商业数据库的接口;Python支持GUI可以创建和移植到许多系统调用。

Python语言不可忽视的问题

1、运行速度慢:由于Python是解释型语言,程序的代码在执行时会一行一行地翻译成CPU所能理解的机器码,这个翻译过程非常耗时,但是由于C/C++语言是编译型语言,程序直接编译成机器码,因此 Python 的运行速度相比C/C++语言确实慢很多。但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助专业的测试工具。那么其实对于大多数情况,Python是完全可以满足我们对程序速度的要求的,除非编写对运行效率要求极高的程序。

2、Python2 与 Python3 不兼容

3、代码无法加密:对于解释性语言,发布程序,就是发布源代码。对于保密性高的程序,Python语言并不适合。

4、多线程无法利用多核CPU:Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行。

Python程序运行机制详解

深入理解 ‘解释与编译’

我们首先了解一下解释型语言与编译型语言。

计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算机高级语言。高级语言允许使用自然语言(通常就是英语)来编程,但高级语言的程序最终必须被翻译成机器指令来执行。

当然,计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器指令,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器指令。而这种转换的方式有两种:编译、解释。高级语言按照计算机执行方式不同可分成两类:静态语言和脚本语言,静态语言采用编译执行,脚本语言采用解释执行。

编译型语言在程序执行之前,需要一个特定的编译过程,把源代码编译成计算机可以执行机器码,之后直接运行编译后的文件即可。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。例如C、C++、Go等属于编译型语言。

编译型语言具有以下特点:

对于相同源代码,编译所产生的目标代码执行速度更快。

与特定平台相关,一般无法移植到其他平台,因此编译型语言的平台移植性并不好。

c6271e251d0d4158abb0e5c971e6c240.jpg

解释型语言使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。它不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。Python、Php等属于解释型语言,但Python并不是完全的解释性语言,后续会详述。

解释型语言具有以下特点:

解释型语言每次运行都需要将源代码解释为机器码并执行,效率较低。

只要平台提供相应的解释器,就可以运行源代码,所以解释性语言的平台移植性较好。

解释执行需要保留源代码,程序纠错和维护十分方便。

a10106a4e97d47b3ae427385974933d7.jpg

解释和编译的区别在于编译是一次性地翻译,一旦程序被编译,不再需要编译程序或者源代码。解释则在每次程序运行时都需要解释器和源代码。

编译过程只进行一次,因此,编译过程的速度并不是关键,目标代码的运行速度是关键。因此,编译器一般都集成尽可能多的优化技术,使生成的目标代码具备更好的执行效率。然而,解释器却不能集成太多优化技术,因为代码优化技术会消耗运行时间,使整个程序的执行速度受到影响。

简单来说,解释执行、逐条运行用户编写的代码,没有纵览全部代码的性能优化过程,因此执行性能略低,但可以支持跨硬件或操作系统平台,保留源代码对升级维护十分有利,适合非性能关键的程序运行场景。

Python语言是一种被广泛使用的高级通用脚本编程语言,虽采用解释执行的方式,但它的解释器也保留了编译器的部分功能,随着程序运行,解释器也会生成一个完整的目标代码。这种解释器和编译器结合的新解释器是现代脚本语言为了提升计算机性能的一种有益演进。

Python解释器

使用C/C++等编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制可执行文件。运行该程序的时候,就可以二进制程序从硬盘载入到内存中并运行。

但是对于Python而言,Python源码不需要编译成二进制代码,它可以直接从源代码运行程序。 Python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行。当我们运行n程序的时候,Python解释器会执行两个步骤:

1、把源代码编译成字节码。编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是Python代码无法运行的像C/C++一样快的原因。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc为扩展名的文件,如果Python无法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给Python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件可以重复利用,提高执行效率。

2、把编译好的字节码转发到Python虚拟机(PVM)中进行执行。PVM是Python Virtual Machine的简称,它是Python的运行引擎,是Python系统的一部分,它是迭代运行字节码指令的一个大循环,一个接一个地完成操作。

因此,Python并非完全是解释性语言,它是有编译的,先把源码.py文件编译成.pyc或者.pyo,再由Python的虚拟机执行,相对于py文件来说,编译成.pyc和.pyo本质上和.py没有区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度。

80a9c230cb66416dae7198b36e2871ca.jpg

Python 解释器的几种实现版本

Python解释器有三种主要的实现方式,CPython、Jython和IronPython 三种实现方式 。

CPython:CPython 是标准的实现,其它的都是有特定目标的。 CPython 是由C语言编写的,它是大多数OS预装的Python解释器,也是所有Python解释器中运行最快、最完整、最健全的。

Jython:Jython 是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython 包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。因为Jython要比CPython 慢而且也不够健壮,它往往看作是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。

IronPython:IronPython 设计的目的是让Python 程序可以与Windows 平台上的.NET 框架以及与之对应的Linux的上开源的Mono编写成的应用集成。



推荐阅读
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • PHP编程能开发哪些应用?
    导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 作者一直强调的一个概念叫做oneloopperthread,撇开多线程不谈,本篇博文将学习,怎么将传统的IO复用pollepoll封装到C++类中。1.IO复用复习使用p ... [详细]
  • 现在需要用到php(现在可以用)
    本文目录一览:1、现在在工作中PHP用到的多么? ... [详细]
author-avatar
Kioone_818
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有