Python函数的参数传递方式和使用
在Python中,函数的参数传递方式有两种:传值(传递的是变量的值)和传引用(传递的是变量的地址)。
1. 传值方式:
在函数调用时,实参的值会被赋值给函数参数。这个赋值过程是将实参的值复制一份给形参,在函数内部使用的是形参的值。所以函数内部对形参的修改不会影响到实参的值。
示例代码:
def change_value(num):
num += 1
value = 10
change_value(value)
print(value) # 输出10
在上面的代码中,value是一个整数变量,通过change_value函数将value作为参数进行传递。在函数内部,num的值被赋值为value的值,即10。然后对num进行了修改,使其加1。但是在函数外部,value的值仍然是10,并没有被修改。
2. 传引用方式:
在函数调用时,实参的地址会被传递给函数参数。所以函数内部对形参的修改会直接影响到实参的值。
示例代码:
def modify_list(lst):
lst.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # 输出[1, 2, 3, 4]
在上面的代码中,my_list是一个列表变量,通过modify_list函数将my_list作为参数进行传递。在函数内部,lst的值被赋值为my_list的地址。然后对lst进行了修改,添加了元素4。在函数外部,my_list的值也被修改了,最终输出的结果是[1, 2, 3, 4]。
需要注意的是,对于不可变类型的参数(如整数、字符串、元组等),传引用方式并不能直接修改实参的值,但是如果在函数内部重新给形参赋值,实参并不会被修改。
示例代码:
def change_string(s):
s = 'hello world'
my_string = 'hi'
change_string(my_string)
print(my_string) # 输出hi
在上面的代码中,my_string是一个字符串变量,通过change_string函数将my_string作为参数进行传递。在函数内部,s的值被赋值为my_string的地址。然后是对s进行了重新赋值为'hello world'。但是在函数外部,my_string的值并没有被修改,最终输出的结果仍然是'hi'。
总结起来,Python函数的参数传递方式是传值和传引用两种方式。对于可变类型的参数,使用传引用方式可以直接修改实参的值;而对于不可变类型的参数,传引用方式如果仅仅对形参进行操作,并不会影响实参的值。
