学习python之初,不知道大家对于python有没有疑惑,应当是有的。这里我整理出来了自己的一些疑惑,供大家参考。

为什么python是高级程序设计语言

​ Java,C,C++这些语言是高级语言,因为他们能极大满足用户的需求,被用于设计开发一些环境。而python,在我心中好像就是个单纯的脚本语言......那么,为什么书上说python是高级语言呢?是我对python的误解吗?

​ 要想解开这个谜底,首先需要了解一下什么是高级程序设计语言,这样才能‘对症下药’。

高级程序设计语言

​ 高级程序设计语言,亦称‘算法语言’,简称‘高级语言’。是用易懂易写的方式编写程序的一种语言。

​ 高级程序设计语言可摆脱计算机指令系统和机器语言随不同机器不同的约束,并设计相应的编译程序(也就是我们常说的‘编译器’),把适用于各种机器的高级语言编写的源程序转换为中央处理器能识别的目标代码。

​ 从这里,我们明确了高级程序设计语言的几个特点:易懂,易写,跨平台,能将高级语言转化为CPU能直接识别的语言。

接下来,就来看看为什么python是高级程序设计语言:

  • 首先,python简单易懂,人们学起来很简单。
  • python易于编写,语法简单,还可以导入第三方库,被广泛使用。
  • python可迁移,因为它不受底层条件的约束,在任何平台上都可运行,比如:LINUX、Windows等等。
  • python文件执行时,python文件将被编译为python字节码,然后编译后的字节码由python虚拟机(Python Virtual Machine)执行。用户不用考虑底层的细节,比如管理程序的内存等等。

综上,python是一门高级程序设计语言

python为什么是解释型编程语言

同上,了解一个东西是否是某个东西时,先弄明白‘某个东西’的本质是什么,再‘对症下药’。

解释型编程语言

相对于编译型语言而存在。源代码不是直接翻译成机器语言,而是先翻译成中间代码,执行时再由解释器翻译成机器语言进行解释运行。比如python,JS,shell等都是解释型编程语言。

了解了这些,再来看看为什么python是解释型语言:

​ 上面浅谈了一下,python执行时是将python文件转化为python字节码,再由python虚拟机编译执行。

​ 这里的python字节码就相当于图中的中间代码,当程序需要执行时,解释器一行一行读取代码,CPU紧接着将解释器翻译的机器代码接收处理,最后得到输出结果。这就是一个python文件执行的过程,因此,python是解释型语言。

用其他语言写的程序python能否调用?如何调用

python是一种“胶水语言”,能够将很多语言粘合在一起。那么,它是如何粘合的呢?

是通过一系列包的导入粘合的。

  • python调用python,使用import或者from...import...
  • python调用C写的dll,用ctypes包
  • python调用exe,用subprocess包
  • python调用C/C++,用Cython生成并调用pyd
  • python调用Java,用jpype包。复杂的,可以尝试用pyjnius
  • python调用R代码,使用subprocess包

Python 的开发,是以 C/C++ 为基础的,所以针对 C/C++ 的调用最为方便。其它程序、动态链接库、代码的调用,都可以通过 EXE、DLL、C/C++ 三种渠道之一实现。Python 还是比较适合粘合各种程序与代码的。

参考文献

[1] 刘庆,刘红英,刘俊坤;《Python编程案例教程》,航空工业出版社

[2] 跑得快,《为什么用Python,高级的Python是一种高级编程语言》,博客园

[3] 《解释型语言》, 百度学术

[4] anonymity,《python是解释型语言吗》,PHP中文网

[5] 曲晓峰,《借石攻玉——如何用 Python 调用其他程序和代码》,知乎

python为什么是高级语言和解释型编程语言?它是如何粘合其它语言写的代码的?的更多相关文章

  1. 【软考5】解释型 or 编译型

    导读:在上篇博客中,我们了解到,目前的编码语言经过不断的发展,已经经历了机器语言--汇编语言--高级语言的过程.虽然我们的编码语言在不停的升级,但作为计算机来说,它始终是一个只能理解0和1构成的机器语 ...

  2. Fluent UDF【7】:解释型UDF

    UDF宏有两种方式可以被Fluent所接受:编译和解释.其中有一些宏既可以被解释也可以被编译,而一些宏则只能被解释.有一些场合只接受编译后的UDF(如动网格中的一些宏),而有些场合既可以接受编译的UD ...

  3. 解释型vs编译型 动态vs静态 强类型vs弱类型

    ------------------------------------------------------------ 释型.动态语言与静态语言.强类型语言与弱类型语言的区别 编译型和解释型 我们先 ...

  4. Python For嵌套循环 图形打印X型 nested loop -练习题

    For嵌套循环图形打印作业很多是C++语言做的,我觉得Python应该也能做,就来试一试. 原网址C++练习题:http://www.imooc.com/qadetail/216848?t=33880 ...

  5. 从 python 中 axis 参数直觉解释 到 CNN 中 BatchNorm 的工作方式(Keras代码示意)

    1. python 中 axis 参数直觉解释 网络上的解释很多,有的还带图带箭头.但在高维下是画不出什么箭头的.这里阐述了 axis 参数最简洁的解释. 假设我们有矩阵a, 它的shape是(4, ...

  6. Java是解释型还是编译型语言?

    有人说Java是编译型的.因为所有的Java代码都是要编译的,.java不经过编译就无法执行. 也有人说Java是解释型的.因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释型 ...

  7. Python将是人工智能时代的最佳编程语言

    Python将是人工智能时代的最佳编程语言 移动互联网取代PC互联网领跑在互联网时代的最前沿,Android和iOS一度成为移动互联网应用平台的两大霸主,成为移动开发者首选的两门技术,HTML5以其跨 ...

  8. 关于python中__name__=='__main__'的解释

    调用文章是:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318451 ...

  9. 编译型 解释型 C++工作原理

    C++教程_w3cschool https://www.w3cschool.cn/cpp/ C++工作原理: C++语言的程序因为要体现高性能,所以都是编译型的.但其开发环境,为了方便测试,将调试环境 ...

随机推荐

  1. golang中打印格式化的一些占位符

    package main import ( "fmt" ) func main() { var a byte = 255 // byte = uint8 rune = int32 ...

  2. linux虚拟机快照

    目录 一:虚拟机快照 一:虚拟机快照 1.什么是快照? 快照可保存虚拟机在特定时刻的状态和数据. 状态包括虚拟机的电源状态(列如,打开电源,关闭电源,挂起). 数据包括组成虚拟机的所有文件,这包括磁盘 ...

  3. linux关闭swap

    #(1)临时关闭swap分区, 重启失效; swapoff -a #(2)永久关闭swap分区 sed -ri 's/.*swap.*/#&/' /etc/fstab 也可以在sysctl.c ...

  4. Android性能优化之Android 10+ dex2oat实践

    作者:字节跳动终端技术--郭海洋 背景 对于Android App的性能优化来说,方式方法以及工具都有很多,而dex2oat作为其中的一员,却可能不被大众所熟知.它是Android官方应用于运行时,针 ...

  5. 打家劫舍(java语言描述(动态规划))

    题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给 ...

  6. 关于一键提取QQ群成员信息的记录

    问题情境 昨天晚上回宿舍看到舍友在吐槽:天哪,我要把70多个人的QQ号全统计出来,只能一个一个地在咱们学院的学院群里找.吐了. 当时我第一反应是用python写个脚本之类的去做,因此查阅了一下资料,找 ...

  7. Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询

    创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...

  8. Python3.7.3 + pycharm安装

    Python3.7.3下载地址: https://www.python.org/ https://www.python.org/getit/ Pycharm: http://www.jetbrains ...

  9. Java 中对象锁和类锁的区别? 关键字 Synchronized的用法?

    一  对象锁和类锁的关系 /* * 对象锁和[类锁] 全局锁的关系? 对象锁是用于对象实例方法,或者一个对象实例上的 this 类锁是用于类的静态方法或者一个类的class对象上的. Ag.class ...

  10. Sweetalert模态对话框与Swiper轮播插件、Bootstrap样式组件、AdminLTE后台管理模板地址

    Sweetalert纯JS模态对话框插件地址:http://mishengqiang.com/sweetalert/ AdminLTE后台管理模板系统地址(基于Bootstrap):https://a ...