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

Python中的函数参数传递方式:传引用和传值

发布时间:2023-06-22 18:25:03

Python是一门非常灵活的编程语言,在函数参数传递时,可以根据实际情况选择传引用或传值的方式,从而实现更加高效的代码编写。

传值方式:

传值方式是指将参数的值复制一份,然后将这份复制的值传递给函数。在函数内部,使用这份复制的值进行操作,不会改变原本的值。这种方式适用于传递简单类型的数据,如int、float、str等。

例如,我们定义一个函数,将一个数字加1:

def add_one(x):
    x += 1
    return x

然后,我们调用这个函数:

num = 10
new_num = add_one(num)
print(num)      #输出结果:10
print(new_num)  #输出结果:11

上面的代码中,num的值为10,调用add_one函数时,num的值被复制一份,并传递给函数。函数内部对这份复制的值进行加1操作,然后将结果返回给new_num。由于传递的是复制的值,因此在函数外部num的值并没有改变。

传引用方式:

传引用方式是指将参数的引用(内存地址)传递给函数。在函数内部,使用这个引用进行操作,会实际地改变原有的值。这种方式适用于传递复杂类型的数据,如list、dict等。

例如,我们定义一个函数,将一个列表中的元素全部加1:

def add_one_to_list(lst):
    for i in range(len(lst)):
        lst[i] += 1
    return lst

然后,我们调用这个函数:

my_list = [1,2,3]
new_list = add_one_to_list(my_list)
print(my_list)      #输出结果:[2,3,4]
print(new_list)     #输出结果:[2,3,4]

上面的代码中,my_list的值为[1,2,3],调用add_one_to_list函数时,my_list的引用被传递给函数。函数内部对这个引用指向的列表进行加1操作,然后将结果返回给new_list。由于传递的是引用,因此在函数外部my_list的值也被改变了。

需要注意的是,在Python中,如果传递的是可变对象的引用,那么在函数内部对这个对象进行的任何操作,都会实际地改变原有的值;如果传递的是不可变对象的引用,那么在函数内部对这个对象进行的任何操作,都不会改变原有的值,而是返回一个新的对象。

因此,在使用Python编写函数时,需要根据实际情况选择传值或者传引用的方式,才能实现更加高效的代码编写。