📅  最后修改于: 2023-12-03 14:46:42.708000             🧑  作者: Mango
在Python中编写函数时,需要定义函数参数。函数参数是传递给函数的值,可以是任何有效的Python表达式。
一个函数可以有多个参数,它们必须在函数定义中声明。函数定义的一般形式如下:
def function_name(parameters):
"""docstring"""
statement(s)
其中:
function_name
:函数名,由字母、数字和下划线组成,以字母开头。parameters
:函数参数,用逗号分隔,可以有多个。docstring
:可选的字符串,用于描述函数的用途和工作方式。statement(s)
:函数体,包含一系列Python语句,执行特定的任务。下面是一个函数定义的示例:
def greet(name):
"""打招呼"""
print(f"Hello, {name}!")
在这个例子中,greet
函数有一个参数name
,用于存储要打招呼的名字。
在Python中,函数的参数可以是位置参数或关键字参数。位置参数是指按照定义顺序传递的参数,例如:
def add(x, y):
"""计算两个数的和"""
return x + y
print(add(2, 3)) # 输出 5
在这个例子中,add
函数有两个位置参数x
和y
,在调用函数时,我们按照定义顺序先传递x
,再传递y
。
除了位置参数之外,Python还支持关键字参数。关键字参数是以名称-值对的形式传递的参数,例如:
def person(name, age):
"""描述一个人"""
print(f"{name} is {age} years old.")
person(name="Alice", age=25) # 输出 Alice is 25 years old.
在这个例子中,person
函数有两个关键字参数name
和age
,在调用函数时,我们使用参数名来指定每个参数的值。
Python还支持默认参数,这些参数在函数定义时指定默认值。如果在调用函数时不提供这些参数的值,则使用默认值。例如:
def greet(name, greeting="Hello"):
"""打招呼"""
print(f"{greeting}, {name}!")
greet("Bob") # 输出 Hello, Bob!
greet("Alice", greeting="Hi") # 输出 Hi, Alice!
在这个例子中,greet
函数有两个参数name
和greeting
,其中greeting
使用了默认值"Hello"
。在第一次调用函数时,我们只传递一个参数name
,因此使用了默认值;在第二次调用函数时,我们使用关键字参数来指定greeting
的值。
有时候,我们需要编写可以接受任意数量的参数的函数。在Python中,不定长参数有两种形式:可变位置参数和可变关键字参数。
可变位置参数允许我们在函数调用时传递任意数量的位置参数。在函数定义中,可以用*
来表示可变位置参数。例如:
def add(*numbers):
"""计算多个数的和"""
result = 0
for number in numbers:
result += number
return result
print(add(1, 2, 3)) # 输出 6
print(add(1, 2, 3, 4)) # 输出 10
在这个例子中,add
函数有一个可变位置参数*numbers
,它可以接受任意数量的位置参数。在函数体中,我们使用循环来遍历numbers
并计算它们的和。
可变关键字参数允许我们在函数调用时传递任意数量的关键字参数。在函数定义中,可以用**
来表示可变关键字参数。例如:
def show_info(**info):
"""显示关键字参数"""
for key, value in info.items():
print(f"{key}: {value}")
show_info(name="Alice", age=25, gender="female")
# 输出:
# name: Alice
# age: 25
# gender: female
在这个例子中,show_info
函数有一个可变关键字参数**info
,它可以接受任意数量的关键字参数。在函数体中,我们使用items()
方法来遍历关键字参数的名称和值,并将它们格式化输出。