📜  Python中的First Class函数

📅  最后修改于: 2020-03-31 02:42:12             🧑  作者: Mango

一门语言中的First Class对象始终都得到统一处理。它们可以存储在数据结构中,可以作为参数传递,也可以在控制结构中使用。如果一种编程语言将函数视为一流的对象,则称其支持一流First Class函数。Python支持First Class函数的概念。
First Class函数的属性:

  • 函数是对象类型的实例。
  • 您可以将函数存储在变量中。
  • 您可以将该函数作为参数传递给另一个函数。
  • 您可以从函数返回函数。
  • 您可以将它们存储在数据结构中,例如哈希表,列表等。

举例说明Python中的First Class函数

1.函数是对象: Python函数是First Class一级的对象。在下面的示例中,我们将函数分配给变量。此分配不会调用该函数。它使用shout引用的函数对象并创建指向它的第二个名称yell。

# Python代码,展示函数可以被当做对象进行传递
def shout(text):
    return text.upper()
print shout('你好')
yell = shout
print yell('芒果文档')

输出

你好
芒果文档

2.函数可以作为参数传递给其他函数:因为函数是对象,所以我们可以将它们作为参数传递给其他函数。可以接受其他函数作为参数的函数也称为高阶函数。在下面的示例中,我们创建了一个函数greet,该函数使用一个函数作为参数。

# Python代码,展示函数可以被当做参数传递给另一个函数
def shout(text):
    return text.upper()
def whisper(text):
    return text.lower()
def greet(func):
    # 把函数存储在一个变量中
    greeting = func("嗨, 我被一个传递函数赋值.")
    print greeting
greet(shout)
greet(whisper)

输出: 

嗨, 我被一个传递函数赋值.
嗨, 我被一个传递函数赋值.

3.函数可以返回另一个函数:因为函数是对象,所以我们可以从一个函数返回另一个函数。在下面的示例中,create_adder函数返回加法器函数。 

# Python代码,展示一个函数返回另一个函数
def create_adder(x):
    def adder(y):
        return x+y
    return adder
add_15 = create_adder(15)
print add_15(10)

 输出: 

25