欢迎光临散文网 会员登陆 & 注册

Python 常见的 170 道面试题全解析

2023-04-17 19:24 作者:编程小宇e  | 我要投稿


语言特性

1.谈谈对 Python 和其他语言的区别

答:Python 是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库,他是一门强类型的可移植、可扩展,可嵌入的解释型编程语言,属于动态语言。

拿 C 语言和 Python 比: Python 的第三方类库比较齐全并且使用简洁,很少代码就能实现一些功能,如果用 C 去实现相同的功能可能就比较复杂。但是对于速度来说 Python 的运行速度相较于 C 就比较慢了。所以有利的同时也有弊端,毕竟我们的学习成本降低了。

2. 简述解释型和编译型编程语言

答:解释型语言是在运行程序的时候才翻译,每执行一次,要翻译一次,效率较低。 编译型就是直接编译成机型可以执行的,只翻译一次,所以效率相对来说较高。


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

答:

CPython c 语言开发的,使用最广的解释器

IPython 基于 cPython 之上的一个交互式计时器,交互方式增强功能和 cPython 一样

PyPy 目标是执行效率,采用 JIT 技术。对 Python 代码进行动态编译,提高执行效率

JPython 运行在 Java 上的解释器,直接把 Python 代码编译成 Java 字节码执行

IronPython 运行在微软 .NET 平台上的解释器,把 Python 编译成 . NET 的字节码。

4.Python3 和 Python2 的区别?

答: 这里例举 5 条

print 在 Python3 中是函数必须加括号,Python2 中 print 为 class。

Python2 中使用 xrange,Python3 使用 range。

Python2 中默认的字符串类型默认是 ASCII,Python3 中默认的字符串类型是 Unicode。

Python2 中/的结果是整型,Python3 中是浮点类型。

Python2 中声明元类:metaclass = MetaClass,Python3 中声明元类:class newclass(metaclass=MetaClass):pass。

5. Python3 和 Python2 中 int 和 long 区别?

答:Python2 有 int 和 long 类型。int 类型最大值不能超过 sys.maxint,而且这个最大值是平台相关的。可以通过在数字的末尾附上一个L来定义长整型,显然,它比 int 类型表示的数字范围更大。在 Python3 里,只有一种整数类型 int,大多数情况下,和 Python2中的长整型类似。


6.xrange 和 range 的区别?

答:xrange 是在 Python2 中的用法,Python3 中只有 range xrange 用法与 range 完全相同,所不同的是生成的不是一个 list 对象,而是一个生成器。

编码规范

7. 什么是 PEP8?

答:PEP8 通常会听别人提到,但是具体的指什么内容呢,简单介绍下。 《Python Enhancement Proposal #8》(8 号 Python 增强提案)又叫 PEP8,他针对的 Python 代码格式而编订的风格指南。


8.了解 Python 之禅么?

答:通过 import this 语句可以获取其具体的内容。它告诉大家如何写出高效整洁的代码。


9.了解 DocStrings 么?


答:DocStrings 文档字符串是一个重要工具,用于解释文档程序,帮助你的程序文档更加简单易懂。主要是解释代码作用的。


10.了解类型注解么?

答:PEP 484 引入了类型提示,这使得可以对 Python 代码进行静态类型检查。 在使用 Ide 的时候可以获取到参数的类型,更方便传入参数。使用格式如下


def foo(num: int) -> None:

print(f接收到的数字是:{num})

介绍下这个简单例子,我们可以在函数的参数部分使用参数名+:+类型,来指定参数可以接受的类型,这里的话就是 num 参数为 int 类型,然后后面->接的是返回值的类型。这里返回值为 None,然后通过 fstring 格式化字符串输出传入的数字。


11.例举你知道 Python 对象的命名规范,例如方法或者类等

答:


类:总是使用首字母大写单词串,如 MyClass。内部类可以使用额外的前导下划线。 变量:小写,由下划线连接各个单词。方法名类似 常量:常量名所有字母大写 等


12.Python 中的注释有几种?

答:总体来说分为两种,单行注释和多行注释。


单行注释在行首是 #。

多行注释可以使用三个单引号或三个双引号,包括要注释的内容。

13. 如何优雅的给一个函数加注释?


答:可以使用 docstring 配合类型注解


14.如何给变量加注释?

答:可以通过变量名:类型的方式如下


a: str = this is string type

15. Python 代码缩进中是否支持 Tab 键和空格混用。


答:不允许 tab 键和空格键混用,这种现象在使用 sublime 的时候尤为明显。


一般推荐使用 4 个空格替代 tab 键。


16.是否可以在一句 import 中导入多个库?

答:可以是可以,但是不推荐。因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。


17.在给 Py 文件命名的时候需要注意什么?

答:给文件命名的时候不要和标准库库的一些模块重复,比如 abc。 另外要名字要有意义,不建议数字开头或者中文命名。


18.例举几个规范 Python 代码风格的工具

答:pylint 和 flake8


数据类型-字符串


19.列举 Python 中的基本数据类型?

答: Python3 中有六个标准的数据类型:字符串(String)、数字(Digit)、列表(List)、元组(Tuple)、集合(Sets)、字典(Dictionary)。


20.如何区别可变数据类型和不可变数据类型

答: 从对象内存地址方向来说


可变数据类型:在内存地址不变的情况下,值可改变(列表和字典是可变类型,但是字典中的 key 值必须是不可变类型)

不可变数据类型:内存改变,值也跟着改变。(数字,字符串,布尔类型,都是不可变类型)可以通过 id() 方法进行内存地址的检测。

21. 将hello world转换为首字母大写Hello World


答: 这个得看清题目是要求两个单词首字母都要大写,如果只是第一个单词首字母大小的话,只使用 capitalize 即可,但是这里是两个单词,所以用下面的方法。


arr = hello world.split( )

new_str = f{arr[0].capitalize()} {arr[1].capitalize()}

print(new_str)

后来评论中有朋友提到了下面的方法,这里感谢这位朋友提醒。方案如下


hello world.title()

非常简单一句话搞定。


22.如何检测字符串中只含有数字?

答:可以通过 isdigit 方法,例子如下


s1 = 12223.isdigit()

print(s1)


s2 = 12223a.isdigit()

print(s2)


#结果如下:

#True

#False

23. 将字符串ilovechina进行反转


答:


s1 = ilovechina[::-1]

print(s1)

24. Python 中的字符串格式化方式你知道哪些?


答:%s,format,fstring(Python3.6 开始才支持,现在推荐的写法)


25.有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。

答:因为题目要是写一个函数所以我们不能直接使用 strip,不过我们可以把它封装到函数啊


def strip_function(s1):

return s1.strip()


s1 = adabdw

print(strip_function(s1))

26. 获取字符串”123456“最后的两个字符。


答:切片使用的考察,最后两个即开始索引是 -2,代码如下


a = 123456

print(a[-2::])

27. 一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?


答:


a= S.encode(gbk).decode(utf-8,‘ignore’)

print(a)

28. (1)s=info:xiaoZhang 33 shandong,用正则切分字符串输出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]。(2)a = 你好 中国 ,去除多余空格只留一个空格。


答:


(1)我们需要根据冒号或者空格切分


import re


s = info:xiaoZhang 33 shandong

res = re.split(r:| , s)

print(res)

(2)


s = 你好 中国

print( .join(s.split()))

29. (1) 怎样将字符串转换为小写。 (2) 单引号、双引号、三引号的区别?


答: (1) 使用字符串的 lower() 方法。


(2)单独使用单引号和双引号没什么区别,但是如果引号里面还需要使用引号的时候,就需要这两个配合使用了,然后说三引号,同样的三引号也分为三单引号和三双引号,两个都可以声名长的字符串时候使用,如果使用 docstring 就需要使用三双引号。


30.数据类型 - 列表


已知 AList = [1,2,3,1,2],对 AList 列表元素去重,写出具体过程。

答:


list(set(AList))


需要更多Python面试题  点赞+评论python


Python 常见的 170 道面试题全解析的评论 (共 条)

分享到微博请遵守国家法律