什么是Python中的第一类函数

rwr*_*wer 20 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)
Run Code Online (Sandbox Code Playgroud)

Bre*_*arn 26

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


Tim*_*san 13

"头等功能"(FCF)是被称为"一等公民"(FCC)的功能.编程语言中的FCC是对象(在这里非常自由地使用术语"对象"):

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

实际上,非常粗略和简单地说,FCF是"函数"类型的变量(或指向函数的变量).您可以使用"正常"变量完成所有操作.

知道了这一点,无论this_is_another_example(myarg)this_is_example(myarg1)都是一流的功能,因为所有的功能都是一流的某些编程语言.


Nel*_*era 5

否。您在谈论高阶函数- 请参阅

一级函数:如果可以将一个函数分配给变量或作为对象/变量传递给其他函数,则该函数称为一级函数。

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
Run Code Online (Sandbox Code Playgroud)

该程序仅用于说明。


小智 5

Python 中的第一类函数:

\n\n

\xe2\x80\x9cfirst-class\xe2\x80\x9d 概念仅与编程语言中的函数有关。一等函数意味着该语言将函数视为值 \xe2\x80\x93,您可以将函数分配给变量,传递它等。在引用函数时很少使用它\xe2\x80\x99,例如\xe2\x80\x9ca 一等函数\xe2\x80\x9d。\xe2\x80\x99s 更常见的是说 \xe2\x80\x9ca 语言具有/hasn\xe2\x80\x99t 一流函数支持\xe2\x80\x9d。所以“具有一流函数”是语言的属性。

\n\n

一等函数的性质:

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

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

\n