python参数的传递机制
python中参数传递有好多时候会有困惑,一些初学这犯迷糊的地方。参数传递呢既不是纯粹的传值也不是纯粹的传引用,而是一种独特及机制,道友且看下面:
Python 参数传递的特点
- 对象引用传递:Python 中所有的参数传递都是"对象引用"的传递
- 不可变对象:对于不可变对象(如数字、字符串、元组),函数内对参数的修改不会影响原始对象
- 可变对象:对于可变对象(如列表、字典),函数内对参数的修改会影响原始对象
示例
不可变对象的传递
def modify_num(x):
x = 10
print("函数内 x:", x)
num = 5
modify_num(num)
print("函数外 num:", num) # 输出仍然是5,没有改变
可变对象的传递
def modify_list(lst):
lst.append(4)
print("函数内 lst:", lst)
my_list = [1, 2, 3]
modify_list(my_list)
print("函数外 my_list:", my_list) # 输出[1, 2, 3, 4],原始列表被修改
参数传递的类型
Python 支持多种参数传递方式:
位置参数:按参数位置顺序传递
def func(a, b):
pass
func(1, 2)
关键字参数:通过参数名指定
func(b=2, a=1)
默认参数:定义函数时指定默认值
def func(a, b=2):
pass
可变长度参数:
- *args 接收任意数量的位置参数
- **kwargs 接收任意数量的关键字参数
def func(*args, **kwargs):
print(args) # 元组形式
print(kwargs) # 字典形式
重要概念:可变与不可变对象
理解 Python 参数传递的关键是区分可变和不可变对象:
- 不可变对象:int, float, str, tuple, frozenset, bytes
- 可变对象:list, dict, set, bytearray, 用户自定义类
这种区分解释了为什么有些参数在函数内修改会影响外部变量,而有些不会。
希望这个解释能帮助你理解 Python 的参数传递机制!
道友还是系统的学习下
有几个手机软件可以编程测试,评论区留言发私发
上一篇:python中参数传递详解