Python基础面经
Q1、Python中的列表和元组有什么区别?
可变性(Mutability):列表是可变的,即可以通过索引修改、添加或删除其中的元素。而元组是不可变的,一旦创建,就不能对其进行修改。如果需要频繁地进行增删改操作,通常使用列表;如果需要确保数据的不可变性,通常使用元组。
性能:由于列表是可变的,它需要更多的内存空间来支持动态调整大小的功能。相比之下,元组是不可变的,因此占用的空间较小,并且具有更快的访问速度。如果不需要修改数据并且追求性能,使用元组可能更合适。
Q2、Python的主要功能是什么?
- 简单易学:Python的语法简洁清晰,易于理解和上手。它采用了简洁、优雅的语法风格,使得开发者能够以更少的代码表达更多的思想。
- 开发效率高:Python提供了丰富的标准库和第三方库,涵盖了各种常用任务的模块和工具,使得开发人员能够快速构建复杂的应用程序。此外,Python还支持自动内存管理和垃圾回收机制,减轻了开发者的负担。
- 跨平台性强:Python可以运行在多个操作系统上,包括Windows、MacOS、Linux等,这使得开发人员可以轻松地编写一次代码并在不同平台上运行。
Q3、Python是通用编程语言吗?
Python是一种通用编程语言。通用编程语言是指可以用于开发各种类型应用程序的编程语言,而不局限于某个特定领域或特定用途。
Q4、Python是如何解释语言的?
- Python是一种解释性语言,它的代码在运行前不需要显式地编译为机器码,而是通过解释器逐行解释并执行代码。
- 当你运行Python程序时,解释器会读取代码文件,并将其转换为一系列的字节码指令。然后,解释器逐条解释字节码指令,并将其转化为机器码,然后由计算机的处理器执行。
Q5、什么是pep?
PEP是一种用于提出、讨论和实现Python语言改进的规范文件。每个PEP都描述了一个具体的问题、特性或改进,并提供了对应的解决方案和实现细节。
Q6、如何在Python中管理内存?
在Python中,内存管理是由解释器自动处理的,开发者通常不需要显式地进行内存管理。Python使用了垃圾回收机制来自动处理不再使用的内存对象的释放。
Q7、Python中的命名空间是什么?
- 命名空间(namespace)是一种用于组织和管理标识符(变量名、函数名、类名等)的机制。它定义了标识符的可见性和访问规则。
- 命名空间可以看作是一个字典,其中键是标识符的名称,值是与之对应的对象。在程序执行期间,Python会维护多个命名空间,并通过栈(stack)的方式进行管理,称为命名空间栈。
Q8、什么是PYTHONPATH?
略
Q9、什么是python模块?Python中有哪些常用的内置模块?
- 模块(module)是一种组织代码的方式,用于将相关的功能封装在一个单独的文件中。一个模块可以包含变量、函数、类等定义,并提供这些定义的接口,以便其他程序可以导入并使用。
- math、os、datatime
Q10、Python中的局部变量和全局变量是什么?
- 局部变量(Local Variable)是在函数内部定义的变量,其作用范围仅限于函数内部。局部变量在函数执行时创建,在函数执行结束后被销毁,不能在函数外部直接访问。每次调用函数时,都会为函数的局部变量创建一个新的实例。
- 全局变量(Global Variable)是在模块级别(函数之外)定义的变量,其作用范围覆盖整个模块,可以在模块的任何地方被访问和修改。
- 如果在函数内部对全局变量进行修改时,需要使用
global
关键字来声明该变量是全局变量,而不是创建一个同名的局部变量。
Q11、python是否区分大小写?
区分
Q12、什么是Python中的类型转换?
int、float、str、bool、list、
Q13、如何在Windows上安装Python并设置路径变量?
略
Q14、python中是否需要缩进?
需要
Q15、Python数组和列表有什么区别?
数据类型:数组是一种固定大小且同质的数据结构,它只能存储具有相同数据类型的元素。列表是一种可变大小且异质的数据结构,它可以存储不同数据类型的元素。
大小调整:数组的大小在创建时就确定,并且不能更改。如果需要更改数组的大小,必须创建一个新的数组。列表的大小是可变的,可以根据需要动态添加或删除元素。
Q16、Python中的函数是什么?
在Python中,函数(Function)是一种可重复使用的代码块,它接受输入参数、执行特定的任务,并且可以返回一个结果。
Q17、什么是__init__?
__init__
是一个特殊方法(Special Method),用于初始化一个类的实例对象。它是类的构造函数,在创建类的对象时自动调用。
Q18、什么是lambda函数?
- 在Python中,lambda函数(也称为匿名函数)是一种简化的函数定义方式,可以快速定义小型的、一次性的函数。相对于使用
def
关键字定义完整的函数,lambda函数更为简洁和紧凑。- 语法:lambda parameters:expression
Q19、Python中的self是什么?
self
在Python中是一个约定俗成的参数名,用于表示类的实例对象自身。它允许在类的方法中访问和操作实例的属性和方法。使用self
可以使代码更具可读性,并符合Python的编程约定。
Q20、什么是python迭代器?
- 迭代器(Iterator)是一种用于遍历可迭代对象(Iterable)的对象。可迭代对象是指实现了
__iter__
方法的对象,而迭代器是在可迭代对象基础上实现了__next__
方法的对象。- 迭代器对象可以使用
next()
函数来逐个访问可迭代对象中的元素,直到达到可迭代对象的末尾,此时会抛出StopIteration
异常。
Q21、range&xrange有什么区别?
range()
返回一个列表对象,一次性生成整个列表。xrange()
返回一个 xrange 对象,按需生成下一个整数值,具有惰性计算的特性。在Python 2中使用。
Q22、如何在python中写注释?
- 单行注释: 使用
#
符号可以在代码行的末尾添加单行注释。- 多行注释: 使用三个引号
'
''
或"""
可以创建多行注释块。
Q23、什么是pickling和unpickling?
- Pickling(序列化):将一个对象转换为字节流的过程称为 pickling 或者叫序列化。这使得对象可以在网络上传输或保存到磁盘上以供将来使用。
- Unpickling(反序列化):将字节流转换回对象的过程称为 unpickling 或者叫反序列化。这允许我们从文件或者通过网络接收的字节流中重新创建对象。在Python中,我们可以使用
pickle
模块来实现对象的反序列化。
Q24、python中的生成器是什么?
生成器(Generator)是一种特殊的函数,可以用于迭代地生成一系列的值,而不是一次性返回所有值。生成器可以更高效地生成大量数据,节省内存空间,并且可以延迟计算,只在需要时生成值
Q25、你如何把字符串的第一个字母大写?
在Python中,可以使用字符串的
capitalize()
方法将字符串的第一个字母变为大写。这个方法会返回一个新的字符串,首字母被转换为大写,其他字母保持不变。string.capitalize()
Q26、如何将字符串转换为全小写?
在Python中,可以使用字符串的
lower()
方法将字符串转换为全小写。这个方法会返回一个新的字符串,其中所有字母都被转换为小写形式。string.lower()
Q27、如何在python中注释多行?
略
Q28、什么是Python中的文档Docstrings?
文档字符串(Docstrings)是用于文档化函数、类、模块等程序实体的字符串。
Q29、operators中的is、not和in各有什么功能?
is
操作符用于比较两个对象的身份标识是否相等。它检查两个对象是否引用同一个内存地址,即判断两个对象是否是同一个对象。not
操作符用于对条件进行取反,即将条件的值取反。它返回布尔值True
或False
in
操作符用于检查一个值是否存在于序列(如字符串、列表、元组等)或其他可迭代对象中。它返回布尔值True
或False
Q30、Python中help()和dir()函数的用法是什么?
help()
函数可以用于获取对象的帮助信息。dir()
函数用于返回对象的属性列表。它返回一个按字母顺序排序的字符串列表,列出了对象所拥有的所有有效属性(方法、变量等)。
Q31、当Python退出时,为什么不清除所有分配的内存?
当程序运行结束或Python解释器退出时,并不会清除所有分配的内存。这是因为Python解释器会在程序结束时自动进行内存清理和资源回收,释放一部分内存,但并非完全清除所有分配的内存。
Q32、Python中的字典是什么?
- 在Python中,字典(Dictionary)是一种无序的、可变的数据结构,用于存储键-值(key-value)对。它是Python中非常常用的数据结构之一,提供了高效的查找和插入操作。
- 键-值对:字典由一组键-值对构成,每个键唯一对应一个值。
- 无序性:字典中的元素没有顺序,不像列表和元组那样有索引。
- 可变性:字典中的键-值对可以动态地进行增删改操作。
- 动态性:字典的大小可以根据需要动态调整
Q33、如何在python中使用三元运算符?
...if ... else
Q34、为什么使用** args,** kwargs?
*args
:用于接收任意数量的位置参数。在函数调用时,可以传入任意多个参数,这些参数会被收集并以元组的形式赋值给args
**kwargs
:用于接收任意数量的关键字参数。在函数调用时,可以传入任意多个键值对,这些键值对会被收集并以字典的形式赋值给kwargs
,在函数内部可以通过kwargs
来访问这些参数。
Q35、len()函数有什么作用?
用于返回一个对象的长度或元素个数
Q36、在Python中split(),sub(),subn()功能。
- split() - 使用正则表达式模式将给定字符串“拆分”到列表中。
- sub() - 查找正则表达式模式匹配的所有子字符串,然后用不同的字符串替换它们
- subn() - 它类似于sub(),并且还返回新字符串。
Q37、什么是负指数,功能是什么
Python中的序列是索引的,它由正数和负数组成。积极的数字使用’0’作为第一个索引,'1’作为第二个索引,进程继续使用。
负数的索引从’-1’开始,表示序列中的最后一个索引,’ - 2’作为倒数第二个索引,序列像正数一样前进。
Q38、什么是Python包?
在Python中,包(Package)是一种用于组织和管理代码的方式。包是一个包含多个模块的文件夹,它提供了一种将相关的模块组织在一起的机制,以便更好地组织、管理和复用代码。
Q39、如何在Python中删除文件?
你可以使用
os.remove()
函数来删除文件
Q40、什么是python的内置类型?
Python的内置类型是指在Python解释器中默认提供的一些基本数据类型,可以直接在代码中使用而无需导入任何模块。
Q41、Python中pass语句的作用是什么?
pass
是一个空语句,它不执行任何操作。pass
被用作一个占位符
Q42、Python里面match()和search()的区别?
match()
方法只在字符串的开头位置进行匹配,如果字符串的开头不满足匹配条件,则返回 None;而search()
方法会在整个字符串中搜索,找到第一个满足匹配条件的子串即可。
match()
方法需要从字符串的开头开始匹配,如果希望匹配成功,整个字符串都必须符合模式要求;而search()
方法可以在字符串的任意位置进行匹配,只要找到满足模式要求的子串即可。