我仍然对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)
答案 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
# 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
答案 6 :(得分:0)
Python中的头等函数:
“一流”概念仅与编程语言中的函数有关。一流的函数意味着该语言将函数视为值-您可以将函数分配给变量,然后将其传递给变量等。在引用函数(例如“一流的函数”)时很少使用。通常说“一种语言具有/不具有一流的功能支持”。因此,“具有一流的功能”是语言的一种属性。
一等函数的属性:
因此,支持具有函数类型的值并将其视为非函数值的语言可以说是具有“一流的函数”。
答案 7 :(得分:0)
这是一个很好的示例,以经典形式说明了 Python一流的函数:一个包含lambda函数的变量:
twice = lambda x: 2 * x
d = twice(5)
print(d) # 10