Python 函数传值方法指的是,函数在调用时将参数传递给函数体内部的过程。Python 函数传值默认采用的传递方式是“按引用传递”,也就是传递的实际是对象的引用(内存地址)。
但是,Python 函数传值的具体行为还有一些需要注意的地方,接下来我们 will 分别从以下两个方面对传值方法进行详细说明:
- Python 函数传值方式的基础知识
- Python 函数传值方法的常见实例
1. Python 函数传值方式的基础知识
1.1 可变类型和不可变类型
在 Python 中,变量的类型分为可变类型和不可变类型两种。其中,不可变类型包括数字、字符串、元组等;可变类型包括列表、字典等。
1.2 Python 函数传值方式
Python 函数传值方式默认采用“传引用”的方式进行传递,即函数内部使用的是传递对象的内存地址(引用),而不是对象的副本。
Python 函数传递可变类型参数时,函数内部对参数的修改会原地修改传递的实参;而传递不可变类型参数时,函数内部的修改并不会影响到传递的实参。
2. Python 函数传值方法的常见实例
2.1 可变类型参数传递
当函数传递可变类型参数时,函数内部的修改会影响到传递的实参。下面是一个例子:
def modify_list(nums):
nums.append(4)
nums.remove(2)
return nums
nums = [1, 2, 3]
modify_list(nums)
print(nums) # 输出结果为 [1, 3, 4]
在上述代码中,定义了一个 modify_list 函数,传入一个可变类型的列表 nums。在函数中,向 nums 中添加了一个元素 4,并移除了元素 2,然后返回列表 nums。最后,在主函数中调用 modify_list 函数,并打印出 nums 的值:输出结果为 [1, 3, 4],说明函数的修改对传递的实参 nums 也产生了影响。
2.2 不可变类型参数传递
当函数传递不可变类型参数时,函数内部的修改并不会影响到传递的实参。下面是一个例子:
def modify_string(s):
s = s + 'world'
return s
s = 'hello'
modify_string(s)
print(s) # 输出结果为 hello
在上述代码中,定义了一个 modify_string 函数,传入一个不可变类型的字符串 s。在函数中,将 s 和 ‘world’ 拼接回来后,返回新的字符串 s。最后,在主函数中调用 modify_string 函数,并打印出 s 的值,输出结果为 hello,说明函数的修改对传递的实参 s 没有产生影响。
从上述例子中可以看出,在函数调用时如果传递的是可变类型参数,函数内部对参数的修改会影响到传递的实参;如果传递的是不可变类型参数,函数内部对参数的修改并不会影响到传递的实参。