一、高阶函数、闭包-创新互联

什么是高阶函数?

创新互联建站是专业的梅里斯网站建设公司,梅里斯接单;提供网站设计制作、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行梅里斯网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一个函数的参数是否可以接受另外一个函数作为参数,这样的函数就叫做高阶函数。

最简单的高阶函数实例:

def func(x,y,z):
   return z(x)+z(y)
print(func(-20,-10,abs))

返回函数


高阶函数除了可以接收函数参数之外,还可以把函数作为返回值

def func(*args):
   def sum():
      ax = 0
      for n in args:
         ax+=n
      return ax
   return sum

a = func(1,2,3,4,5,6)
print(a())

结果是:21

内部函数可以引用外部函数的参数和局部变量,当外部函数返回内部函数时,相关参数和变量都保存在返回的函数当中,这就是闭包。

当调用外部func函数的时候,每次调用都是返回一个新的的函数,即使传值是一致的,也会不一样。例子如下:

def func(*args):
   def sum():
      ax = 0
      for n in args:
         ax+=n
      return ax
   return sum

a1 = func(1,2,3,4,5,6)
a2 = func(1,2,3,4,5,6)

print(a1==a2)

结果返回是False。

但是如果print(a1()==a2())是True ,调用的值是一样的!

def count():
   fs = []
   for i in range(1,5):
      def f():
         return i*i*i
      fs.append(f)
   return fs

f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())

结果是:

64
64
64
64

--------------------------------------------------------------

def count():
   def f(i):
      def func():
         return i*i
      return func
   fs = []
   for var in range(1,5):
      fs.append(f(var))
   return fs
f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())

结果是:

1
4
9
16

划重点:返回函数不要应用任何循环变量,或者后面会发生改变的变量。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:一、高阶函数、闭包-创新互联
文章起源:http://scjbc.cn/article/dooogi.html

其他资讯