MST

星途 面试题库

面试题:Python中可变与不可变类型的特性及应用

请解释Python中可变类型和不可变类型的区别,并各举两个例子。如果有一个函数接收一个参数,当这个参数是可变类型和不可变类型时,函数内部对参数的修改会有什么不同的表现?
18.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

可变类型和不可变类型的区别

  1. 可变类型:对象的值可以在原地被修改,修改后对象的内存地址不变。
  2. 不可变类型:对象一旦创建,其值就不能被修改。如果需要修改,会创建一个新的对象,内存地址也会改变。

例子

  1. 可变类型
    • 列表(List):例如 my_list = [1, 2, 3],可以使用 my_list.append(4) 等方法修改列表内容。
    • 字典(Dictionary):例如 my_dict = {'a': 1},可以使用 my_dict['b'] = 2 来添加新的键值对。
  2. 不可变类型
    • 整数(Int):例如 num = 5,如果执行 num = num + 1,实际上是创建了一个新的整数对象 6num 指向了新的对象。
    • 字符串(String):例如 s = 'hello',执行 s = s + ' world',会创建一个新的字符串对象 'hello world's 指向新对象。

函数中参数修改的表现

  1. 可变类型参数:函数内部对可变类型参数的修改会影响到函数外部传入的对象。例如:
def modify_list(lst):
    lst.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list)  # 输出: [1, 2, 3, 4]
  1. 不可变类型参数:函数内部对不可变类型参数的修改不会影响到函数外部传入的对象。例如:
def modify_num(num):
    num = num + 1
my_num = 5
modify_num(my_num)
print(my_num)  # 输出: 5