在Python中,函数参数传递的规则如下:
1. 不可变对象作为参数:当传递不可变对象(例如数字、字符串、元组)作为函数参数时,实际上是传递了对象的值的副本。在函数内部对参数进行修改不会影响到原始对象。
2. 可变对象作为参数:当传递可变对象(例如列表、字典、集合)作为函数参数时,实际上是传递了对象的引用。在函数内部对参数进行修改会影响到原始对象。
3. 默认参数:函数定义时可以给参数指定默认值。调用函数时如果没有传递该参数,则使用默认值。默认参数的值只在函数定义时评估一次,即每次调用函数时如果没有传递该参数,都会使用默认值。
4. 关键字参数:调用函数时可以通过参数名指定参数的值,而不必按照函数定义时的顺序传递参数。这种方式称为关键字参数。
5. 可变数量参数:函数定义时可以使用*args表示可变数量的位置参数,使用**kwargs表示可变数量的关键字参数。这样函数可以接受任意数量的参数。
需要注意的是,对于不可变对象和可变对象,函数内部修改参数并不会改变原始对象的引用。函数内部重新给参数赋值只是改变了参数的引用,不会改变原始对象的引用。