参数传递机制
Python 使用的是“按对象引用传递”(pass by object reference)的方式。这意味着当你将一个对象作为参数传递给函数时,你实际上是在传递该对象的引用而不是副本。因此,如果在函数内部修改了可变对象(如列表、字典),这些修改会反映到外部的对象上;而对于不可变对象(如整数、字符串、元组),由于它们不能被修改,所以不会影响原始对象。
参数类型
位置参数(Positional Arguments) 这是最常见的参数传递方式,调用函数时按照定义顺序传递参数。
关键字参数(Keyword Arguments) 通过指定参数名来传递参数值,这样可以不按照定义顺序传递参数。
默认参数(Default Arguments) 定义函数时为参数提供默认值,当调用函数时没有提供对应的参数值,则使用默认值。
可变数量的参数(*args 和 kwargs)
*args:允许你传入任意数量的位置参数,这些参数会被收集到一个元组中。
*kwargs:允许你传入任意数量的关键字参数,这些参数会被收集到一个字典中。
可变对象 vs 不可变对象
对于不可变对象(如整数、字符串、元组),在函数内部对参数的任何改变都不会影响到外部的变量,因为实际上是在操作一个新的对象。
对于可变对象(如列表、字典),在函数内部对参数的改变会影响到外部的变量,因为两者指向同一个对象。
通过理解这些概念,你可以更好地控制函数参数的传递方式,并根据需要选择最合适的参数传递策略。无论是简单的函数调用还是复杂的数据处理逻辑,正确地使用参数传递机制都是至关重要的。