100 个基本 Python 面试问题第一部分(1-20)|Python 主题月 - 掘金
1.什么是python,使用它有什么好处,你对PEP 8 有什么理解?
python是一种解释型语言(python采用解释运行方式编写无需进行编译即可直接通过解释器执行)
好处:
- 数据处理速度快
- 编程效率高(py是完全面向对象的语言。数字,模块,字符串,数据结构都是对相关,支持类,继承,重载)
- py是一种动态类型语言,可以在声明时不设置变量类型,也不会报错(弊端是什么)
- 用途多:数据分析,测试自动化,数据建模,大数据分析
PEP8:py编程标准是更具有可读性
2.若程序不需要动作但语法需要则可在py中使用语句是什么
pass语句是一个空操作,执行时,什么也没发生,它会被视为一个占位符,表示什么都不做,执行到pass语句时,程序会继续向下执行,pass语句通常用做代码占位符,用于在语法上需要语句但逻辑上不需要
letter = "hai"
for i in letter:
if i == 'a':
pass
print("pass")
else:
print(i)
3.py使用“~”获取主目录的过程是什么?
导入os模块
import os
print(os.path.expanduser('~')
// 输出
/home/runner
py的os模块用于与操作系统进行交互的模块,提供了许多函数和方法,可以用于执行各种与操作相关的任务,例如文件和目录操作,进程管理,环境变量访问
环境和目录操作:创建,删除,重命名,移动文件或目录
路径操作:合并路径,拆分路径,获取当前工作目录
4.py中可用的内置类型有哪些?
不可变内置数据类型 | 可变内置数据类型 |
数字 | 列表 |
字符串 | 字典 |
元组 | 集合 |
5.如何在py应用程序中查找错误或执行静态分析
pychecker:静态分析,检查代码bug
pylint:编程标准
6.什么时候用py装饰器
对py语法中进行更改,装饰器是一种用来修改函数或类的行为高级技术
本质上是一个函数它接收一个函数作为参数并返回一个新函数,通过装饰器,我们可以在不修改原函数代码情况下添加额外功能或改变函数的行为
1.定义装饰器:首先定义一个装饰器函数用@语法糖将装饰器应用到目标函数或方法上
def my_decorator(func):
def wrapper(*args,**kwargs):
result = func(*args,**kwargs)
return result
return wrapper
2.应用装饰器用@符号将装饰器应用到需要装饰的函数或方法上
@my_decorate
def my_function():
pass
my_function函数通过@my_decorator语法应用了my_decorator装饰器,当调用my_function,会调用my_decorator返回wrapper函数
7.列表和元素主要区别是什么?
列表可变,元组不可变
元组可以被散列,使用它作为字典的键
8.py如何处理内存管理(代码怎么实现)
py使用私有堆来维护其内存,因此堆包含所有py对象和数据结构,这个区域只有py解释器可以访问
处理私有堆的py内存管理器为py对象执行所需的内存分配
用内置垃圾收集器可回收所有来使用的内存并卸载到堆空间
9.lambda 和 def 之间的主要区别是什么?
- Def 可以容纳多个表达式,而 lambda 是一个单表达式函数。
- Def 生成一个函数并指定一个名称以便稍后调用它。Lambda 形成一个函数对象并返回它。
- def 可以有一个 return 语句。Lambda 不能有 return 语句。
- Lambda 支持在列表和字典中使用。
10. Q-11:用 python reg表达式模块"re"编写一个reg 表达式来验证电子邮件 ID
Python 有一个正则表达式模块“re”,查看可以检查 .com 和 .co.in 子域的电子邮件 ID的“re”表达式。
import re
print(re.search(r"[0-9a-zA-Z.]+@[a-zA-Z]+\.(com|co\.in)$","micheal.pages@mp. com"))
Q-12:你认为以下代码片段的输出是什么?代码中有错误吗?
list = ['a', 'b', 'c', 'd', 'e']
print (list[10:])
以上代码行的结果是[]。不会有任何类似 IndexError 的错误。
你应该知道尝试使用超过成员计数的索引从列表中获取成员(例如,尝试访问问题中给出的 list[10])会产生 IndexError。顺便说一下,仅检索超过 no 的起始索引处的切片。列表中的项目不会导致 IndexError。它只会返回一个空列表。
Q-13:Python 中有 switch 或 case 语句吗?如果不是,那么相同的原因是什么?
没有,Python 中没有 Switch 语句,但是你可以编写一个 Switch 函数然后使用它
Q-14:Python 用来迭代数字序列的内置函数是什么?
Range()生成一个数字列表,用于迭代for循环
for i in range(5):
print(i)
range()函数带有两组参数
范围(停止)
- 停止:它是没有。要生成并从零开始的整数。例如。范围(3) == [0, 1, 2]。 范围([开始],停止[,步骤])
- 开始:这是起始编号。的序列。
- 停止:它指定序列的上限。
- Step:生成序列的增量因子。 注意事项:
- 只允许整数参数。
- 参数可以是正数或负数。
- Python 中的range()函数从第零个索引开始。
Q-15:Python 的 try-except 块中可能有哪些可选语句?
Q-16:Python 中的字符串是什么?
Q-17:Python 中的切片是什么?(不懂)
切片是一种字符串操作,用于提取字符串的一部分,或列表的某些部分。在 Python 中,一个字符串(比如文本)从索引 0 开始,第 n 个字符存储在位置 text[n-1]。Python 还可以在负数的帮助下执行反向索引,即反向索引。在 Python 中, slice() 也是一个生成切片对象的构造函数。结果是 range(start, stop, step) 提到的一组索引。slice() 方法允许三个参数。1. start – 切片开始的起始编号。2. stop – 表示切片结束的数字。3. step – 在每个索引后递增的值(默认值 = 1)。
Q-18:Python 中的 %s 是什么?
Python 支持将任何值格式化为字符串。它可能包含相当复杂的表达式。
一种常见的用法是将值推送到带有 %s 格式说明符的字符串中。Python 中的格式化操作与 C 函数 printf() 具有类似的语法。
Q-19:字符串在 Python 中是不可变的还是可变的?
Python 字符串确实是不可变的。
让我们举个例子。我们有一个保存字符串值的“str”变量。我们不能改变容器,即字符串,但可以修改它包含的内容,即变量的值。
Q-20:Python 中的索引是什么?
索引是一种整数数据类型,表示有序列表或字符串中的位置。
在 Python 中,字符串也是字符列表。我们可以使用从零开始到长度减一的索引来访问它们。
例如,在字符串“Program”中,索引是这样发生的:
Program 0 1 2 3 4 5
Q-21:Python 中的文档字符串是什么?
文档字符串是一个独特的文本,它恰好是以下 Python 结构中的第一条语句:
模块、函数、类或方法定义。
Q-22:Python 编程中的函数是什么?
函数是一个对象,它代表一个代码块并且是一个可重用的实体。它为程序带来了模块化和更高程度的代码可重用性。
Python 为我们提供了许多内置函数,例如 print() 并提供了创建用户定义函数的能力。
Q-23:Python 中有多少基本类型的函数?
Python 为我们提供了两种基本类型的函数。
built-in 函数恰好是 Python 语言的一部分。其中一些是 print()、dir()、len() 和 abs() 等。
Q-24:我们如何用 Python 编写函数?
我们可以通过以下方式创建一个 Python 函数。
第 1 步:要开始函数,请使用关键字 def 开始书写,然后提及函数名称。
第 2 步:我们现在可以传递参数并使用括号将它们括起来。最后的冒号标志着函数头的结束。
第 3 步:按回车键后,我们可以添加所需的 Python 语句以供执行。
Q-25:Python 中的函数调用或可调用对象是什么?
Python 中的函数被视为可调用对象。它可以允许一些参数,也可以以元组的形式返回一个或多个值。除了函数之外,Python 还具有其他结构,例如类或属于同一类别的类实例。
Q-26:Python 中的 return 关键字是做什么用的?
return 是一个 Python 语句,我们可以在函数中使用它来将值发送回其调用者。
Q-27:Python 中的“按值调用”是什么?
Python 会将该变量视为函数级作用域中的局部变量。对该变量所做的任何更改都将保留在本地,不会反映到函数之外。
Q-28:Python 中的“按引用调用”是什么?
我们交替使用“调用引用”和“引用传递”。当我们通过引用传递参数时,它可以作为对函数的隐式引用,而不是简单的副本。在这种情况下,调用者也可以看到对参数的任何修改。
该方案还具有带来更多时间和空间效率的优势,因为它不需要创建本地副本。
相反,缺点可能是在函数调用期间变量可能会被意外更改。因此,程序员需要在代码中进行处理以避免这种不确定性。
Q-29:trunc() 函数的返回值是多少?
Python trunc() 函数执行数学运算以从特定表达式中删除十进制值并提供整数值作为其输出。
Q-30:Python 函数必须返回一个值吗?
函数完全没有必要返回任何值。但是,如果需要,我们可以使用 None 作为返回值。
Q-31:Python 中的 continue 有什么作用?
continue 是 Python 中的跳转语句,它移动控制以执行循环中的下一次迭代,而块中的所有剩余指令均未执行。
continue 语句适用于“while”和“for”循环。
Q-32:Python 中 id() 函数的用途是什么?
id() 是 Python 中的内置函数之一。
Signature: id(object)
它接受一个参数并返回与输入对象关联的唯一标识符。
Q-33:*args 在 Python 中有什么作用?
我们在函数头中使用 *args 作为参数。它使我们能够传递 N(可变)个参数。
# Python code to demonstrate
# *args for dynamic arguments
def fn(*argList):
for argx in argList:
print (argx)
fn('I', 'am', 'Learning', 'Python')
// 输出
I
am
Learning
Python
Q-34:**kwargs 在 Python 中做什么?
我们还可以在 Python 函数声明中使用 **kwargs 语法。它让我们传递 N(可变)个可以命名或关键字化的参数。
# Python code to demonstrate
# **kwargs for dynamic + named arguments
def fn(**kwargs):
for emp, age in kwargs.items():
print ("%s's age is %s." %(emp, age))
fn(juejin=8, Haiyong=22, Tom=32)
// 输出
juejin's age is 6.
Haiyong's age is 22.
Tom's age is 32.
Q-35:Python 有 Main() 方法吗?
main() 是入口点函数,它恰好在大多数编程语言中首先被调用。
由于 Python 是基于解释器的,因此它会逐行逐行执行代码。
Python 也有一个 Main() 方法。但是每当我们通过直接单击它或从命令行启动它来运行我们的 Python 脚本时,它就会被执行。
我们还可以使用 Python if 语句覆盖 Python 默认的 main() 函数。请看下面的代码。
print("Welcome")
print("__name__ contains:",__name__)
def main():
print("Testing the main function")
if __name__ == '__main__':
main()
// 输出
Welcome
__name__ contains: __main__
Testing the main function
Q-36: __ Name __ 在 Python 中有什么作用?
__name__
是一个唯一的变量。由于 Python 不公开 main() 函数,因此当它的解释器开始运行脚本时,它首先执行缩进 0 级的代码。
要查看 main() 是否被调用,我们可以在 if 子句中使用 __name__
变量与值“__main__”
进行比较。
Q-37:Python 中“end”的目的是什么?
# Example: Print a instead of the new line in the end.
print("Let's learn" , end = ' ')
print("Python")
# Printing a dot in the end.
print("Learn to code from juejin" , end = '.')
print("cn", end = ' ')
// 输出
Let's learn Python
Learn to code from juejin.cn
Q-38:什么时候应该在 Python 中使用“break”?
Python 提供了一个 break 语句来退出循环。每当代码中出现中断时,程序的控制权立即从循环体中退出。
Q-39:Python 中的 pass 和 continue 有什么区别?
Q-40:len() 函数在 Python 中有什么作用?
在 Python 中,len() 是一个主要的字符串函数。它确定输入字符串的长度。
>>> some_string = 'juejin'
>>> len(some_string)
6
Q-41: chr() 函数在 Python 中有什么作用?
chr() 函数在 Python 3.2 中重新添加。在 3.0 版本中,它被删除了。
例如,chr(122) 返回字符串 'z' 而 chr(1212) 返回字符串 'Ҽ'。
Q-42:ord() 函数在 Python 中有什么作用?
>>> ord("z")
122
Q-43:Python 中的 Rstrip() 是什么?
Python 提供了 rstrip() 方法,该方法可以复制字符串但从末尾省略空白字符。
rstrip() 根据参数值从右端转义字符,即一个字符串,提到要排除的字符组。
str.rstrip([char sequence/pre>
#Example
test_str = 'Programming '
# 尾随空格被排除在外
print(test_str.rstrip())
Q-45:Python 中的 isalpha() 是什么?
Python 提供了这个内置的 isalpha() 函数来处理字符串。
如果字符串中的所有字符都是字母类型,则返回 True,否则返回 False。
Q-53:Python 如何管理内存?
Python 在内部实现了一个堆管理器,它保存着它的所有对象和数据结构。
Q-54:Python 中的元组是什么?
它们类似于序列,就像列表一样。但是,元组和列表之间存在一些差异;前者不允许修改,而列表允许。
Q-55:Python 编程中的字典是什么?
字典是一种数据结构,在 Python 中称为关联数组,用于存储对象的集合。
该集合是一组具有单个关联值的键。我们可以称它为哈希、映射或哈希映射,因为它在其他编程语言中被调用。
Q-56:Python 中的 set 对象是什么?
集合是 Python 中的无序集合对象。它们存储唯一且不可变的对象。Python 的实现源自数学。
Q-57:字典在 Python 中有什么用?
字典有一组对象(键)映射到另一组对象(值)。Python 字典表示唯一键到值的映射。
它们是可变的,因此不会改变。与键关联的值可以是任何 Python 类型。
Q-58:Python 列表是链表吗?
Python 列表是一个变长数组,它不同于 C 风格的链表。
在内部,它有一个用于引用其他对象的连续数组,并在列表头结构中存储指向数组变量及其长度的指针。
Q-59:Python 中的 Class 是什么?
Python 支持面向对象编程,并提供了几乎所有的 OOP 特性以供程序使用。
Python 类是创建对象的蓝图。它定义成员变量并获取与它们相关联的行为。
我们可以通过使用关键字“class”来实现。对象是从构造函数创建的。这个对象代表类的实例。
在 Python 中,我们通过以下方式生成类和实例。
>>>class Human: # Create the class
... pass
>>>man = Human() # Create the instance
>>>print(man)
<__main__.Human object at 0x0000000003559E10>