下面是Python函数定义与使用的完整攻略。
函数定义
在Python中,函数通常由以下几个部分组成:
- 函数名:函数的名称,用于调用该函数。
- 参数列表:函数接收的参数,可选。
- 函数体:函数的主体,包含一些代码块,用于执行一些逻辑操作。
定义函数的语法如下所示:
def function_name(parameters):
"""函数文档字符串"""
# 函数体
return [expression]
其中,def
关键字用于定义函数,function_name
是函数的名称,parameters
是函数的参数列表,每个参数之间用逗号分隔,函数体包含在缩进块中。
函数的文档字符串是描述函数作用和用法的字符串,用于为函数添加文档说明,方便其他程序员理解和使用该函数。
函数体中的语句用于执行函数的逻辑操作,可以使用 return
语句返回函数执行结果。
函数调用
要调用一个函数,只需要使用函数名和参数列表即可。例如:
def greet(name):
print(f"Hello, {name}!")
greet("world")
在上面的示例中,我们定义了一个简单的函数 greet
,它接收一个字符串参数 name
,然后将其打印出来。函数被调用时,传递了一个参数值 “world”,函数就会打印出 “Hello, world!”。
参数传递
Python支持四种类型的参数传递方式:位置参数、关键字参数、默认参数和可变参数。
位置参数
位置参数是指按照参数列表中的位置顺序传递参数的方式。
def add(x, y):
return x + y
result = add(3, 4)
print(result) # 7
在上面的示例中,我们定义了一个接收两个参数的函数 add
,然后调用它并将两个参数传递给它,然后将其打印出来。
关键字参数
关键字参数以 key=value
的形式传递,可以不按顺序传递参数。
def greet(name, greeting):
print(f"{greeting}, {name}!")
greet(greeting="Hello", name="world") #Hello, world!
上面示例定义了一个函数greet()
,其接收两个参数,分别是name
和greeting
,而在函数调用的时候,我们使用了关键字参数,将参数传递给函数,无论传递顺序如何,都能正常工作。
默认参数
默认参数是在函数定义时指定的,当函数调用时,如果没有传递该参数,则将使用默认值。
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("world") # Hello, world!
在上面的示例中,我们定义了一个接受两个参数的函数 greet
,其中参数 greeting
被指定了默认值 “Hello”。在函数调用时,如果只传递了一个参数,函数会使用默认值来初始化 greeting
。
可变参数
可变参数是指接收可变数量参数的函数。
def add(*numbers):
result = 0
for num in numbers:
result += num
return result
print(add(1, 2)) # 3
print(add(1, 2, 3)) # 6
在上面的示例中,我们定义了一个名为 add
的函数,该函数使用 *args
格式的参数来接受任意数量的参数。然后,在函数内部,通过循环遍历参数,将它们相加到 result
变量中。
示例代码
下面是一些更复杂的函数定义和调用示例:
# 计算平均数的函数
def avg(*args):
if len(args) == 0:
return 0.0
return sum(args) / len(args)
print(avg()) # 0.0
print(avg(1, 2, 3)) # 2.0
print(avg(10, 20, 30, 40, 50)) # 30.0
# 计算阶乘的函数
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 120
# 将字符串转换为整数列表的函数
def str_to_int_list(string):
lst = string.split()
return [int(x) for x in lst]
print(str_to_int_list("1 2 3 4")) # [1, 2, 3, 4]
这些示例演示了 Python 函数的一些高级功能,例如默认参数、可变参数和递归函数。