盘点Python特性的高频面试题

302 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

前言

作为一名Python工程师,我们在面试的时候,面试的问题林林总总,但Python基础这一块是必问题。你的Python基础到底好不好呢?今天总结一下Python基础常见的面试题-python特性。

1. Python 是强语言类型还是弱语言类型?

答:Python是强类型的动态脚本语言。

  • 强类型:不允许不同类型相加。
  • 动态:不使用显示数据类型声明,且确定一个变量的类型是在第一次给它赋值的时候。

因为Python很少有隐式的转换变量的类型,所以是强类型的语言。

2. 解释性语言和编译性语言的区别?

答:计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,

计算机才能执行高级语言编写的程序。

  • 编译性语言就是得再代码运行前编译,只有编译成功了才能运行代码。
  • 解释性语言就是不要在代码运行前编译,而是边编译边运行。如果代码有错误,是一边运行,到了有错误的地方编译错误才会报错。

3. Python是如何进行数据类型转换的?

答:Python有内建函数进行数据类型的转换,可以使用目标类型关键字强制类型转换。可使用内置函数进行转换的类型有:

  • list <-> 元组:tuple(list);list(tuple)

我们可用type()查看数据类型。我们对内置的数据类型进行转换时,一般只要将数据类型作为函数名就行了。Python数据类型转换有2种方式,分别是 隐式类型转换和显示类型转换。

  • 隐式转换:自动将数据类型转换为另一种。比如整数和浮点数的加减会自动转换为浮点数以避免数据丢失。type(2 + 0.2)类型会显示为float;
  • 显示转换:将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。比如下例:
> int(2) # 输出为2
> int(2.2)  # 输出为2
> int("2")  # 输出为2

4. Python2和Python3的主要区别有哪些?

答:区别主要有:

  • 默认编码不同。Python2默认使用ASCLL码,因此string有str和unicode类型;Python3默认utf-8编码,string只支持unicode类型。
  • Python3的import是采用绝对路径的方式导入,而Python2是相对导入。
  • Python2中存在老式类和新式类的区别,Python3统一采用新式类。新式类声明要求继承object, 必须用新式类应用多重继承。
  • 废弃类的差异:print语句在Python3被废弃,采用的是print函数;不相等操作符"<>"被 Python3 废弃,统一使用"!=";long 整数类型被 Python3 废弃,统一使用 int;xrange在Python3废弃,统一使用range;raw_input 函数被 Python3 废弃,统一使用 input 函数。
  • 浮点数除法/和//区别:Python2的除法“/”为2个整数运算时,结果为整型;而Python3不会根据运算的数类型改变结果。比如python2:3/2=1;Python3:3/2=1.5。

5. Python 中的作用域是怎样的

答:Python 中,一个变量的作用域总是由在代码中被赋值的地方所决定。当 Python 遇到一个变量的话

它会按照这的顺序进行搜索:

本地作用域(Local)--->当前作用域被嵌入的本地作用域(Enclosing locals)--->全局/模块作用域 (Global)--->内置作用域(Built-in)。

6. 有什么手段能提升Python运行性能?

答:根据不同场景,合理使用下列方式:

  • 使用多进程,充分利用机器的多核性能
  • 对于 IO 阻塞造成的性能影响,可以使用 IO 多路复用来解决
  • 尽量使用 Python 的内建函数
  • 尽量使用局部变量

小结

本文总结了几道Python特性的高频面试题,这些题目虽简单,却能看出我们的Python基本功到底怎么样。我们在学习语言和技能时,需要多注意基础和细节,这样才能更有效的避免踩坑。