在Python中,修改实参的值取决于实参的类型。以下是一些基本规则:
不可变对象(如字符串、数字、元组)在函数内部被修改时,实际上是在创建一个新的对象,而实参保持不变。
可变对象(如列表、字典、集合)在函数内部被修改时,实参可能会被修改,因为这些对象是可变的,意味着它们的内容可以在不改变对象身份的情况下被改变。
下面是一些示例代码,展示了这些规则:
不可变对象
def change_immutable(n):
n = 'Mr Gumby' 创建一个新的字符串对象
names = ['Mrs Entity', 'Mrs. Thing']
change_immutable(names)
print(names) 输出:['Mr Gumby', 'Mrs. Thing']
可变对象
def change_mutable(v):
v = v + 1 修改列表的第一个元素
a =
change_mutable(a)
print(a) 输出:
def add_item_to_list(v, item):
v.append(item) 向列表添加元素
a =
add_item_to_list(a, 3)
print(a) 输出:[2, 3]
def modify_dict(d):
d['age'] = 38 修改字典中的元素
a = {'name': 'Dong', 'age': 37, 'sex': 'Male'}
modify_dict(a)
print(a) 输出:{'name': 'Dong', 'age': 38, 'sex': 'Male'}
注意事项
当传递列表给函数,并且函数内部修改列表的元素时,列表的内容会反映到函数外部,实参得到相应的修改。
如果函数内部修改的是列表的整体(例如,通过赋值操作符 `=`),则实参不会被修改,因为这里创建了一个新的列表对象。
希望这些信息能帮助你理解Python中如何修改实参的值。