我仍然对什么是一流的功能感到困惑。如果我理解正确,一等函数应该使用一个函数作为对象。这个对吗?
这是一流的功能吗?
def this_is_example(myarg1):
return myarg1
def this_is_another_example(myarg):
return this_is_example(myarg) + myarg
this_is_another_example(1)
我仍然对什么是一流的功能感到困惑。如果我理解正确,一等函数应该使用一个函数作为对象。这个对吗?
这是一流的功能吗?
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 中的所有函数都是一等函数。说函数在某种编程语言中是一流的,意味着它们可以像传递和操作其他类型的对象(如整数或字符串)一样被传递和操作。您可以将函数分配给变量,将其作为参数传递给另一个函数,等等。区别不在于单个函数可以是或不是第一类,而是整个语言可能将函数视为第一类对象,也可能不是.
“一等函数”(FCF)是被视为所谓的“一等公民”(FCC)的函数。编程语言中的 FCC 是对象(在这里非常随意地使用术语“对象”),它:
实际上,非常粗略和简单地说,FCF 是“函数”类型的变量(或指向函数的变量)。你可以用它们做任何你可以用“正常”变量做的事情。
知道这一点,两者this_is_another_example(myarg)
都是this_is_example(myarg1)
一等函数,因为在某些编程语言中所有函数都是一等函数。
不,您说的是高阶函数——请参阅.
第一类函数:如果一个函数可以分配给一个变量或作为对象/变量传递给其他函数,则该函数称为第一类函数。
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
该程序仅用于说明。
Python中的第一类函数:
“一流”概念仅与编程语言中的函数有关。一等函数意味着该语言将函数视为值——您可以将函数分配给变量,将其传递等等。它很少用于指代函数,例如“一等函数”。更常见的说法是“一种语言有/没有一流的功能支持”。所以“有一流的功能”是一种语言的属性。
一等函数的性质:
因此,支持具有函数类型的值并将它们视为非函数值的语言可以说具有“第一类函数”。
Python中的第一类函数
语言中的第一类对象在整个过程中被统一处理。它们可以存储在数据结构中,作为参数传递,或者在控制结构中使用。如果一种编程语言将函数视为一等对象,则称它支持一等函数。Python 支持 First Class 函数的概念。
第一类函数的属性:
函数是 Object 类型的实例。
- 您可以将函数存储在变量中。- 您可以将函数作为参数传递给另一个函数。- 您可以从函数返回函数。- 您可以将它们存储在数据结构中,例如哈希表、列表……
说明 Python 中的第一类函数的示例
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')
输出:
你好
你好
# 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)
输出:
嗨,我是由作为参数传递的函数创建的。
嗨,我是由作为参数传递的函数创建的。
#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
def pie(r):
def circleArea(d):
return r * (d ** 2)
return circleArea
c = pie(3.14)
print c(2)
以上是python中第一类函数的示例。
python 中的每个函数都是一流的,因为它们可以像任何其他对象一样被传递。
这是一个很好的例子来说明Python的经典形式的一等函数:一个包含 lambda 函数的变量:
twice = lambda x: 2 * x
d = twice(5)
print(d) # 10