06-函数实参和形参
https://docs.python.org/zh-cn/3/tutorial/controlflow.html#more-on-defining-functions
在 Python 中,函数的形参(形式参数)和实参(实际参数)的数量不一定相等。
实参必须多于形参——这个和 JS 不一样
1、这是最常见的情况,形参和实参数量相等:
1
2
3
4
|
def greet(name, age):
print(f"Hello, {name}! You are {age} years old.")
greet("John", 30) # Hello, John! You are 30 years old.
|
2、实参数量多于形参数量:在这种情况下,多余的实参会被忽略。
1
2
3
4
|
def greet(name, age):
print(f"Hello, {name}! You are {age} years old.")
greet("John", 30, "male") # Hello, John! You are 30 years old.
|
3、实参数量少于形参数量:在这种情况下,会引发 TypeError 异常。
1
2
3
4
|
def greet(name, age):
print(f"Hello, {name}! You are {age} years old.")
greet("John") # TypeError: greet() missing 1 required positional argument: 'age'
|
解决方法:如果实际参数缺少,可以使用默认参数值:可以为形参指定默认值,如果调用时没有实参,则使用默认值。
1
2
3
4
|
def greet(name, age=30):
print(f"Hello, {name}! You are {age} years old.")
greet("John") # Hello, John! You are 30 years old.
|
或者使用可变参数:
1
2
3
4
|
def greet(name, *args):
print(f"Hello, {name}! You are {', '.join(map(str, args))}.")
greet("John", 30, "male") # Hello, John! You are 30, male.
|