什么是Python中的第一类函数

时间:2014-12-10 02:31:21

标签: python function first-class-functions

我仍然对first-class functions是什么感到困惑。如果我理解正确,first-class functions应该使用一个函数作为对象。这是对的吗?

这是first-class function吗?

def this_is_example(myarg1):
    return myarg1

def this_is_another_ example(myarg):
     return this_is_example(myarg)+myarg

this_is_another_ example(1)

8 个答案:

答案 0 :(得分:25)

一流的功能不是一种特殊的功能。 Python中的所有函数都是一流的函数。要说函数在某种编程语言中是一流的,这意味着它们可以被传递和操作类似于传递和操纵其他类型的对象(如整数或字符串)。您可以将一个函数赋值给一个变量,将它作为一个参数传递给另一个函数,等等。区别不是单个函数可以是第一类或不是,但是整个语言可以将函数视为第一类对象,或者可能不是

答案 1 :(得分:12)

"一流的功能" (FCF)是被视为所谓的"一流公民" (FCC)。编程语言中的FCC是对象(使用术语"对象"非常自由):

  • 可用作参数
  • 可以用作返回值
  • 可以分配给变量
  • 可以存储在数据结构中,例如哈希表,列表......

实际上,非常大致而简单地说,FCF是类型'功能'的变量。 (或指向函数的变量)。你可以用他们做的一切你可以做的正常'变量

了解这一点,this_is_another_example(myarg)this_is_example(myarg1)都是第一类函数,因为所有函数在某些编程语言中都是First-Class。

答案 2 :(得分:5)

没有。你在谈论高阶函数 - refer

第一类函数:如果函数可以赋值给变量或作为对象/变量传递给其他函数,那么该函数被称为第一类函数。

Python,JavaScript和C(指针)支持第一类函数。

一个简单的例子(在python中):

def square(x): return x * x
def cube(x): return x * x * x

def print_result(x, func):
    """recieve a function and execute it and return result"""
    return func(x)

do_square = square     # assigning square function to a variable
do_cube = cube         # assigning cube function to a variable

res = print_result(5, do_square)   # passing function to another function
print res
res = print_result(5, do_cube)
print res

此计划仅供参考。

答案 3 :(得分:1)

def pie(r):
    def circleArea(d):
        return r * (d ** 2)
    return circleArea

c = pie(3.14)
print c(2)

上面是python中第一类函数的一个例子。

答案 4 :(得分:0)

python中的每个函数都是第一类,因为它们可以像任何其他对象一样传递。

答案 5 :(得分:0)

Python中的First Class函数

  

语言中的第一类对象在整个过程中均匀处理。   它们可以存储在数据结构中,作为参数传递或使用   控制结构。据说一种编程语言支持   如果它将函数视为第一类对象,则为第一类函数。   Python支持First Class函数的概念。

头等功能的属性:
函数是Object类型的实例   - 您可以将函数存储在变量中。   - 您可以将该函数作为参数传递给另一个函数。   - 您可以从函数返回该函数。   - 您可以将它们存储在数据结构中,例如哈希表,列表......

说明Python中的First Class函数的示例
1.函数是对象:Python函数是第一类对象。在下面的示例中,我们将函数赋值给变量。此赋值不会调用该函数。它接受shout引用的函数对象并创建指向它的第二个名称,叫喊。



    # Python program to illustrate functions
    # can be treated as objects
    def shout(text):  
        return text.upper()      
    print shout('Hello') 
    yell = shout 
    print yell('Hello')

输出:
HELLO
HELLO

  1. 函数可以作为参数传递给其他函数:因为函数是对象,我们可以将它们作为参数传递给其他函数。可以接受其他函数作为参数的函数也称为高阶函数。在下面的示例中,我们创建了一个函数greet,它将函数作为参数。
  2. 
    
        # Python program to illustrate functions
        # can be passed as arguments to other functions
        def shout(text):
            return text.upper()
        def whisper(text):
            return text.lower()
        def greet(func):
            #storing the function in a variable
            greeting = func("Hi, I am created by a function passed as an argument.")
            print greeting     
        greet(shout)
        greet(whisper)
    
    

    输出:
    嗨,我是以作为论据的功能创造的。
    嗨,我是通过作为参数传递的函数创建的。

    1. 函数可以返回另一个函数:因为函数是对象,我们可以从另一个函数返回一个函数。在下面的示例中,create_adder函数返回加法器函数。
    2. 
      
          #Python program to illustrate functions
          #Functions can return another function    
          def create_adder(x):  
              def adder(y):  
                  return x+y  
              return adder  
          add_15 = create_adder(15)
          print add_15(10)
      
      

      输出:
      25

答案 6 :(得分:0)

Python中的头等函数:

“一流”概念仅与编程语言中的函数有关。一流的函数意味着该语言将函数视为值-您可以将函数分配给变量,然后将其传递给变量等。在引用函数(例如“一流的函数”)时很少使用。通常说“一种语言具有/不具有一流的功能支持”。因此,“具有一流的功能”是语言的一种属性。

一等函数的属性:

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

因此,支持具有函数类型的值并将其视为非函数值的语言可以说是具有“一流的函数”。

答案 7 :(得分:0)

这是一个很好的示例,以经典形式说明了 Python一流的函数:一个包含lambda函数的变量

twice = lambda x: 2 * x
d = twice(5)
print(d)  # 10