python面试之语言特性(2)

1.解释型和编译型编程语言的区别

解释型语言

源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。

编译型语言

编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制),像C/C++等都是编译型语言。

2.Python 的解释器种类以及相关特点

CPython

官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广且被的Python解释器。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

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

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

在这些Python解释器中,使用广泛的是CPython 。

3.简单列举Python3 和 Python2 之间的区别

3.1print的区别

python3

print('hello world')

python2

print 'hello world'

3.2取值范围的区别

python3

for i in range(5):
   print(i)

python2

a = xrange(0,5) 
print a 
print a[0], a[1]

3.3字符串存储的区别

python3

python3中字符串以 16-bit Unicode 字符串存储

python2

python2中 字符串以 8-bit 字符串存储

3.4异常机制的区别

python3

try:
    print(2020/0)
except Exception as e:
    print("0不能作为除数")
    raise e
finally:
    print("都要执行")

python2

try:
	x = 2020/0
	print x
except ValueError:
    print "0不能作为除数"

3.5打开文件的区别

python3

f = open('test_file.txt', 'r+') #f是文件的文件句柄
data = f.read()
print(data)
f.close()

python2

#以file来打开文件
f = file("test_file.txt") 
#输出f的数据类型
print type(f)                    
data = f.read()[3:].decode('utf-8') 
f.close()

3.6键盘输入的区别

python3

a = input('这是what?')
print('这是',a)

python2

name = raw_input('Please enter your number: ')
print name

3.7除法的区别

python3

num = 10 / 3
print(num) # 3.3333333333333335

python2

num = 10 / 3
print num # 3

3.8库的变化

以下举的简单例子,还有很多,还需自己慢慢总结。

python2中的urllib、urilib2两个库合并为python3中的urllib库;python2中的urllib2.urlopen()变为python3中的urllib.request.urlopen()

4.Python3 和 Python2 中 int 和 long 区别

python2中有long类型,python3没有long类型,只有int类型。
python3精度更高

num = 10 / 3
print(num) # 3.3333333333333335

python2精度低

num = 10 / 3
print num # 3
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值