在Python中,函数可以作为参数传递给另一个函数,也可以作为返回值返回给调用者。这种将函数作为参数或返回值的技术称为高阶函数(Higher-order functions)。下面分别介绍这两种情况的用法和示例代码。
-
函数作为参数传递: 在Python中,函数作为参数传递的方式有两种,一种是直接将函数名作为参数传递,另一种是使用lambda表达式定义一个匿名函数作为参数。
示例1:将函数名作为参数传递
def greet(name): print("Hello, " + name + "!") def do_twice(func, name): func(name) func(name) do_twice(greet, "Alice")
输出:
Hello, Alice! Hello, Alice!
在上面的示例中,我们定义了一个
greet
函数来打印问候语。然后我们定义了一个do_twice
函数,它接受一个函数和一个参数,并调用该函数两次。最后,我们通过将greet
函数作为参数传递给do_twice
函数来实现对greet
函数的调用。示例2:使用lambda表达式定义匿名函数作为参数
def do_twice(func, name): func(name) func(name) do_twice(lambda name: print("Hello, " + name + "!"), "Bob")
输出:
Hello, Bob! Hello, Bob!
在上面的示例中,我们使用lambda表达式定义了一个匿名函数作为参数传递给
do_twice
函数。这个匿名函数接受一个参数name
并打印问候语。 -
函数作为返回值: Python中的函数可以返回另一个函数作为结果。这种情况下,返回的函数可以在调用函数之后继续被调用。
示例:
def greet(): def say_hello(name): print("Hello, " + name + "!") return say_hello greet_func = greet() greet_func("Charlie")
输出:
Hello, Charlie!
在上面的示例中,我们定义了一个
greet
函数,它返回另一个函数say_hello
。say_hello
函数可以在调用greet
函数之后被调用。我们将greet
函数的返回值赋值给greet_func
变量,并通过调用greet_func
来调用say_hello
函数。
总结: 函数作为参数传递和函数作为返回值是Python中函数进阶的两个重要概念。可以通过这种方式实现更加灵活和可复用的代码。