Python参数详解:从基础到缺省与不定长参数

0 下载量 42 浏览量 更新于2024-08-31 收藏 194KB PDF 举报
"Python参数详解" Python参数是函数定义和调用的核心部分,它们允许我们传递数据给函数,让函数根据输入执行特定的操作。本文将深入探讨Python参数的不同类型和特性。 1. 形参与实参 在Python中,函数定义时的小括号内的参数被称为“形参”(formal parameters),它们是函数内部使用的占位符。而当我们实际调用函数并传递的值则被称为“实参”(actual parameters)或“参数值”。形参在函数内部作为局部变量存在,它们的生命周期仅限于函数执行期间。 2. 定义带有参数的函数 例如,我们可以定义一个简单的函数`num1(a)`,它接受一个参数`a`,然后打印这个参数。同样,`num2(a, b)`和`num3(a, b, c)`分别接受两个和三个参数,进行不同的计算和输出。 3. 调用带有参数的函数 调用函数时,我们需要按照定义时的顺序提供相应的实参。如`num2(1, 2)`,我们将1和2分别对应传给了`a`和`b`。 4. 缺省参数 缺省参数允许我们在定义函数时为参数设置默认值,如果在调用时不提供该参数的值,它将使用默认值。例如,`info(name, age=20)`函数中,`age`参数的默认值是20。因此,当只传入`name`时,`age`会使用默认值,如`info(name='zcf')`;如果提供`age`的值,它将覆盖默认值,如`info(age=21, name='zcf')`。 5. 缺省参数的注意事项 默认参数必须放在非默认参数的后面,因为非默认参数不能依赖于默认参数的值。如果违反这一规则,Python解释器会抛出`SyntaxError`,如示例中的`info(name, age=20, sex)`。 6. 不定长参数 不定长参数允许函数接收任意数量的参数。有两种类型的不定长参数: - *args:用于接收任意数量的位置参数,它们会被打包成一个元组。 - **kwargs:用于接收任意数量的关键字参数,它们会被打包成一个字典。 例如: ```python def var_func(*args, **kwargs): print("位置参数:", args) print("关键字参数:", kwargs) var_func(1, 2, 3, key1="value1", key2="value2") ``` 这将在运行时打印出位置参数 `(1, 2, 3)` 和关键字参数 `{'key1': 'value1', 'key2': 'value2'}`。 7. 参数传递机制 Python采用“传对象引用”而非“传值”或“传址”。这意味着,当我们将一个对象(如列表、字典等可变对象)作为参数传递时,函数内部对这个对象的修改会影响到原始对象。而对于不可变对象(如整数、字符串、元组),函数内部的修改不会影响到原始对象。 通过理解这些基本的Python参数概念,我们可以编写更加灵活和可复用的函数,以适应各种编程需求。在实际开发中,合理利用参数特性可以提高代码的可读性和维护性。