我来自c
第一类函数的概念既有趣又令人兴奋。 然而,我正在努力寻找返回函数的实际用例
我看过构建函数返回打印光栅的例子
Hello = grating('Hello')
Hi = grating('Hi')
但为什么这比仅仅使用
grating('Hello')
和grating('Hi')
考虑:
def func_a():
def func_b():
do sonthing
return somthing
return func_b
当这更好时:
def func_b():
do sonthing
return somthing
def func_a():
res = func_b()
return (res)
有人能给我举一个现实世界中有用的例子吗? 谢谢
假设您想要传递一个函数,该函数将根据参数选择函数:
显然,这是有点做作的,但它将选择比较器的逻辑与比较器函数本身分开
你的例子写得没有帮助。但在其他情况下,它是有用的,例如decorator(在函数和返回函数上调用的函数,用于修改为将来调用它们的函数的行为)和闭包。闭包情况可以是一种方便(例如,代码的其他部分不希望在每次调用中都传递10个参数,而其中8个参数始终是相同的值;这通常由
functools.partial
涵盖,但闭包也可以工作),或者它可以是一种缓存时间节约。对于后者的一个例子,想象一个愚蠢的函数,它测试一组小于某个界限的数中的哪一个是素数,方法是计算所有达到该界限的素数,然后过滤这些素数集中的输入如果您将其写为:
然后,每次通话你都要重新筛选埃拉托什尼,这就淹没了设置交叉口的成本。如果将其实现为闭包,则可以执行以下操作:
现在,如果您需要一段时间的测试仪,您可以执行以下操作:
而且每次对
get_primes
的调用都很便宜(如果缓存的素数已经覆盖了您,则基本上是免费的,如果需要计算更多,则更便宜)函数返回函数的一个完美示例是Python装饰器:
修饰符是
hello_world()
函数声明上方的@foo
符号。本质上,我们告诉解释器,每当它看到提到hello_world()
时,实际上调用foo(hello_world())
,因此,上面代码的输出是:相关问题 更多 >
编程相关推荐