python语言是多模型语言-Python的语言特点

Python是一种结合了解释性和编译性的动态语言,其执行过程中先将源代码编译为字节码,提高了运行效率。Python的动态特性体现在变量类型在运行时决定,允许灵活的参数传递和类对象定义。此外,通过类型系统和面向对象特性,Python实现了动态属性和方法。
摘要由CSDN通过智能技术生成

Python有哪些语言特点?可以列出的特点很多,例如,《Python核心编程》第二版列出了十多条特点。本文的三个特点是笔者学习Python的体会,其他特点有体会之后再写,笔者是这样概括的:Python是解释性和编译性结合的、动态的、面向对象的。

解释性和编译性

解释性是指高级语言程序运行的时候依赖于解析器将程序翻译成计算机能理解的低级语言指令,编译性指高级语言运行前先编译成计算机可执行目标低级语言,然后让计算机执行。由于解释型语言在运行过程中仍需解释器逐句翻译而编译型语言只要编译好就可以直接执行而无需再解释,所以相对来说,编译型语言的运行速度快,即性能高。笔者认为,python语言是解释性和编译性混合的。下面多余的展开也就这个意思。

计算机无法识别和执行高级语言,一个高级语言程序在可执行之前先要翻译成一种能被计算机执行的低级语言,这没有贬低的意思,方便而已。而完成这项翻译工作的就是语言处理器,常见的有编译器和解释器。编译器可以将某种高级语言程序翻译成等价的目标语言程序,以被计算机执行。解释器则是在程序文件运行的过程中将其逐句翻译成计算能看懂的指令(二进制码)。由于编译型语言一经编译成目标语言程序,计算机马上可以执行,而解释型在程序运行时还要慢慢的解释每一句给计算机执行,所以,一般来说解释型语言运行速度比编译型的慢;所以把用户输入映射成输出的过程中,由一个编译器产生的机器语言目标程序要比由一个解释器快,也就是编译型的性能好。

然而为什么还存在解释型呢?当然是由于解释型相对于编译型的一些优点,比如动态(也是缺点,不过笔者认为是优大于缺,而动态和解释性相关,不同观点勿见怪)等。所以为了兼顾性能与开发效率,某些语言自然混合了解释性和编译性。笔者认为,python程序的执行是混合了解释性和编译性的:当程序执行时,python内部(这是一个抽象)先将源程序(即我们编写的程序)编译成"字节码”,这个过程是我们看不见的,即被隐藏起来了,如果python进程在机器上拥有写入权限,那么,它将把程序的字节码保存为一个以.pyc为扩展名的文件(这是一个优化性能的步骤:在下次运行该程序时,如果程序没有变化,那么解释器将直接加载这个文件从而跳过了编译这个步骤以提高速度),然后再发送给虚拟机。字节码一旦发送给虚拟机(PVM),虚拟机便开始逐条执行翻译(如下图)。字节码并不是cpu码(二进制码),所以执行起来相对编译后的二进制码仍然是慢。

4eb2492a3fcf

不知道为啥图片要刷新才会显示@博客园团队

动态的

动态,相对于静态,意味着随时可变,意为灵动。也可以称之为动态类型:类型由代码运行过程中自行决定,无需声明强调,而静态类型则是在运行前决定。

变量

python的变量就是在特定的时间引用一个特定的对象,不同的变量可以引用同一个对象,所以对象地址也是相同的,对象的类型必须是明确的,而所有对象首先必须要知道自己的类型(解析器能够判断,例如对象3知道自己的类型是int),这样的赋值才是有意义,像单纯一句"a=b”这样的变量引用是错误的,因为解释器无法在其作用域中判断出对象b的类型。类型属于对象而不是变量名,所以无需指明变量的类型。

4eb2492a3fcf

变量的引用和内存管理相关,可以查找引用计数和垃圾回收方面的资料,祥略。

4eb2492a3fcf

>>> a=1>>> a=0.5>>> a='a'>>> a=[]>>> type(1)>>> type(0.5)>>> type('a')>>> type([])>>> a=b

Traceback (most recent call last):

File "", line 1,in? ? a=b

NameError: name 'b'isnotdefined

4eb2492a3fcf

参数

Python中,参数通过赋值传递,赋值相当于变量的引用,自然,函数和方法中的参数的值和类型也都是动态的,这些参数的值只有在被调用的时候定义,而非在函数内定义。其实,函数定义内的参数是形参,而调用时提供给参数的的值则为实参,参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值