文章目录
语言特性
1.谈谈对 Python 和其他语言的区别
- Java:Python程序运行速度比Java程序慢,但开发时间也要短得多。Python程序通常比等价的Java程序短3-5倍。这种差异可以归因于Python内置的高级数据类型及其动态类型。
- JavaScript:Python的“基于对象的”子集大致相当于JavaScript。与JavaScript(与Java不同)一样,Python支持使用简单函数和变量而不使用类定义的编程风格。然而,对于JavaScript来说,这就是全部。另一方面,Python支持通过真正面向对象的编程风格编写更大的程序和更好的代码重用,其中类和继承起着重要的作用。[1]
- C/C++:Python是基于解释器的语言,解释器会逐行读取代码,首先将Python编译为字节码,然后由大型C程序解释。C是一种编译语言,完整的源代码将直接编译为机器代码,由CPU直接执行。Python使用自动垃圾收集器进行内存管理,C必须自己管理,这引入了复杂度和危险性,但另一方面,它也增加了控制力和灵活性,是C/C++独特之处,亦是强大之处。Python相对于C很慢,不需要声明变量类型,但更易于学习和编写。[2]
2.简述解释型和编译型编程语言
解释型语言:编写好程序以后,可以直接在解释器上运行的,我们知道程序是人们定义的一些列高级语法,这个直接交给操作系统肯定是不认识的。所以需要解释器把程序段转化成机器码,再由操作系统执行。这里我们就发现了解释性语言的一大特点:就是:程序是边运行边进行机器码转化(转化完后cpu执)。对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言
编译型语言:编写好程序以后,首先需要编译器进行编译,统一转化成机器码,然后这个编译完的文件,可以放在操作系统直接执行,程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它。[3]
3.Python 的解释器种类以及相关特点?[4]
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
- CPython:当我们从Python官方网站下载并安装好Python 3.5后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
- IPython:基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
- PyPy:它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
- JPython:运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
- IronPython:和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
4.说说你知道的Python3 和 Python2 之间的区别?[5]
1.性能
Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果。
Py3.1性能比Py2.5慢15%,还有很大的提升空间。
2.编码
Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>> 中国 = ‘china’
>>>print(中国)
china
3. 语法
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as 和with,还有True,False,None
4)整型除法返回浮点数,要得到整型结果,请使用//
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
例如:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使用逗号结尾禁止换行
3.X: print(x, end=" ")