Python 代码分析面试题, 以下 Python 程序的运行结果是?
Python 代码分析面试题, 以下 Python 程序的运行结果是?
QA
Step 1
Q:: 解释以下 Python 代码的运行结果,并说明原因:
x = [1, 2, 3, 4]
y = x
x[0] = 9
print(y)
A:: 输出结果是 [9, 2, 3, 4]
。这是因为 y
和 x
指向同一个列表对象,当 x
的内容改变时,y
也会反映出相同的变化。
Step 2
Q:: 分析以下代码的输出结果,并说明原因:
def func(a, b=[]):
b.append(a)
return b
print(func(1))
print(func(2))
A:: 输出结果是 [1]
和 [1, 2]
。这是因为默认参数 b
只在函数定义时被初始化一次,后续调用 func
时会使用同一个 b
列表对象。
Step 3
Q:: 解释以下 Python 代码的运行结果,并说明原因:
def add_to_list(element, target_list=[]):
target_list.append(element)
return target_list
list1 = add_to_list(1)
list2 = add_to_list(2, [])
list3 = add_to_list(3)
print(list1)
print(list2)
print(list3)
A:: 输出结果是 [1, 3]
,[2]
和 [1, 3]
。默认参数 target_list
只在函数定义时被初始化一次,因此 list1
和 list3
共享同一个列表,而 list2
使用的是一个新的空列表。
Step 4
Q:: 分析以下代码的输出结果,并说明原因:
class A:
def __init__(self):
self.value = 0
def increment(self):
self.value += 1
class B(A):
def increment(self):
self.value += 10
obj = B()
obj.increment()
print(obj.value)
A:: 输出结果是 10
。类 B
继承自类 A
,并重写了 increment
方法。因此,B
类的 increment
方法会增加 value
10 而不是 1
。
Step 5
Q:: 解释以下 Python 代码的运行结果,并说明原因:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list(map(lambda x, y: x + y, list1, list2))
print(result)
A:: 输出结果是 [5, 7, 9]
。map
函数应用 lambda
函数到 list1
和 list2
中对应的元素,lambda
函数返回对应元素的和。
用途
面试这些内容是为了考察候选人对 Python 基础概念的理解,以及他们如何处理常见编程问题。这些问题涵盖了变量引用、默认参数、继承和多态、函数式编程等重要概念。实际生产环境中,理解这些概念有助于编写更高效、可维护的代码,避免潜在的错误。\n相关问题
🦆
如何避免 Python 默认参数带来的副作用?▷
🦆
解释以下代码的输出结果,并说明原因:
python
x = 0 * 3
x00 = 1
printx
▷
🦆
Python 中 deepcopy 和 copy 的区别是什么?▷
🦆
在 Python 中如何实现多继承?▷
🦆
解释以下代码的输出结果,并说明原因:
python
def outer:
x = 1
def inner:
printx
return inner
func = outer
func
▷