欢迎访问宙启技术站
智能推送

Python函数之间的参数传递方法。

发布时间:2023-05-19 01:47:35

Python函数中参数传递是指在调用一个函数时,将数据传递给函数中的参数。Python函数中有两种参数传递方法:按值传递和按引用传递。

按值传递

按值传递是指将实参的值复制一份给形参,因此函数中的形参改变不会影响实参的值。Python中的数字、字符串和元组都是不可变的对象,其在函数中传递时使用的是按值传递的方式。

例如:

def change_num(num):
    num += 1
    print("函数内num的值为:", num)

num = 1
change_num(num)
print("函数外num的值为:", num)

输出结果为:

函数内num的值为: 2
函数外num的值为: 1

在函数内部,将num的值加1之后,通过print语句输出函数内num的值,此时num的值确实为2,但在程序中并没有改变num的值。在函数外部,num的值仍然是1。

按引用传递

按引用传递是指将实参的引用复制一份给形参,形参中保存的实际上是对原始对象的引用,因此函数中对形参的改变会影响实参的值。Python中的列表、字典和集合都是可变的对象,其在函数中传递时使用的是按引用传递的方式。

例如:

def change_list(mylist):
    mylist.append(1)
    print("函数内mylist的值为:", mylist)

mylist = [0]
change_list(mylist)
print("函数外mylist的值为:", mylist)

输出结果为:

函数内mylist的值为: [0, 1]
函数外mylist的值为: [0, 1]

在函数内部,将mylist中添加了一个元素1,并通过print语句输出函数内mylist的值,此时mylist的值确实为[0, 1]。在函数外部,mylist的值同样为[0, 1],由此可见在函数中对mylist的改变影响了程序中mylist的值。

总结

按值传递和按引用传递是两种不同的参数传递方式,需要根据传递对象的类型来选择不同的方式。按值传递是将对象的值复制一份给形参,而按引用传递是将对象的引用复制一份给形参,所以按引用传递更为高效,并且在函数内改变对象时,按引用传递可以将改变反映到程序的实际对象中。需要特别注意的是,在Python中,由于数字、字符串和元组都是不可变对象,所以这些对象在函数中传递时,仍然采用按值传递的方式,如果在函数内改变这些对象的值,则会创建一个新的对象。