MST

星途 面试题库

面试题:Python函数默认值设置中的常见陷阱

在Python中设置函数默认值时,有哪些常见的陷阱需要注意?请举例说明。
34.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 可变对象作为默认值的陷阱
    • 当使用可变对象(如列表、字典)作为函数参数的默认值时,默认值会在函数定义时被初始化一次,而不是每次调用函数时都重新初始化。
    • 例如:
def append_to_list(item, my_list=[]):
    my_list.append(item)
    return my_list


list1 = append_to_list(1)
list2 = append_to_list(2)
print(list1)  
print(list2)  
  • 在上述代码中,my_list是一个列表,作为默认参数。由于它只初始化一次,后续调用append_to_list函数时,my_list是同一个对象。所以list1list2会包含所有添加的元素。
  1. 作用域相关的陷阱
    • 如果在函数定义时,默认值依赖于外部作用域的变量,且该变量在函数定义后被修改,可能会出现意外结果。
    • 例如:
x = 10
def print_value(val = x):
    print(val)


x = 20
print_value()  
  • 这里在定义print_value函数时,val的默认值是x,此时x的值为10。尽管之后x的值被修改为20,但函数默认值已经确定为10,所以print_value()会输出10。