python参数的传递机制

python参数的传递机制

经验文章nimo972025-04-27 16:02:232A+A-

python中参数传递有好多时候会有困惑,一些初学这犯迷糊的地方。参数传递呢既不是纯粹的传值也不是纯粹的传引用,而是一种独特及机制,道友且看下面:

Python 参数传递的特点

  1. 对象引用传递:Python 中所有的参数传递都是"对象引用"的传递
  2. 不可变对象:对于不可变对象(如数字、字符串、元组),函数内对参数的修改不会影响原始对象
  3. 可变对象:对于可变对象(如列表、字典),函数内对参数的修改会影响原始对象

示例

不可变对象的传递

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 的参数传递机制!

道友还是系统的学习下

有几个手机软件可以编程测试,评论区留言发私发

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7