【问题标题】:What is first class function in PythonPython中的第一类函数是什么
【发布时间】:2015-02-08 03:20:58
【问题描述】:

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

这是一流的功能吗?

def this_is_example(myarg1):
    return myarg1

def this_is_another_example(myarg):
    return this_is_example(myarg) + myarg

this_is_another_example(1)

【问题讨论】:

    标签: python function first-class-functions


    【解决方案1】:

    一等函数不是特定类型的函数。 Python 中的所有函数都是一等函数。说函数在某种编程语言中是一流的,意味着它们可以像传递和操作其他类型的对象(如整数或字符串)一样被传递和操作。您可以将函数分配给变量,将其作为参数传递给另一个函数,等等。区别不是单个函数可以是第一类或不是,而是整个语言可能将函数视为第一类对象,也可能不是.

    【讨论】:

      【解决方案2】:

      “一等函数”(FCF)是被视为所谓的“一等公民”(FCC)的函数。 FCC 在编程语言中是对象(在这里非常随意地使用术语“对象”):

      • 可以作为参数使用
      • 可用作返回值
      • 可以赋值给变量
      • 可以存储在哈希表、列表等数据结构中...

      实际上,非常粗略简单地说,FCF 是“函数”类型的变量(或指向函数的变量)。你可以用它们做任何你可以用“正常”变量做的事情。

      知道了这一点,this_is_another_example(myarg)this_is_example(myarg1) 都是一等函数,因为在某些编程语言中所有函数都是一等函数。

      【讨论】:

        【解决方案3】:

        没有。你说的是高阶函数——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
        

        这个程序只是为了说明。

        【讨论】:

        • C 真的将函数视为一等公民吗?想在 C 中添加示例吗?
        • @ypercubeᵀᴹ 我不是 C 人。对此感到抱歉。但我确实记得你可以将指针传递给你的函数调用。不过我不确定。
        【解决方案4】:

        Python 中的第一类函数:

        “一流”概念仅与编程语言中的函数有关。一等函数意味着该语言将函数视为值——您可以将函数分配给变量,传递它等等。它很少用于指代函数,例如“一等函数”。更常见的说法是“一种语言有/没有一流的功能支持”。所以“有一流的功能”是一种语言的属性。

        一等函数的属性:

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

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

        【讨论】:

        【解决方案5】:
        def pie(r):
            def circleArea(d):
                return r * (d ** 2)
            return circleArea
        
        c = pie(3.14)
        print c(2)
        

        以上是python中第一类函数的示例。

        【讨论】:

          【解决方案6】:

          Python 中的一流函数

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

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

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

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

          输出:
          你好
          你好

          1. 函数可以作为参数传递给其他函数:因为函数是对象,我们可以将它们作为参数传递给其他函数。可以接受其他函数作为参数的函数也称为高阶函数。在下面的示例中,我们创建了一个以函数为参数的函数 greet。
          
          
              # 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 函数返回 adder 函数。
          
          
              #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

          【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            这是一个很好的例子来说明 Python 一级函数的经典形式:包含 lambda 函数的变量

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

            【讨论】:

              猜你喜欢
              • 2014-05-27
              • 1970-01-01
              • 1970-01-01
              • 2016-07-21
              • 2014-07-08
              • 1970-01-01
              • 2014-08-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多