高阶函数

 

高阶函数:

  可以把函数作为参数传入,这样的函数叫做高阶函数。

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

 

def func(a,b,c):
  return c(a)+c(b)
print(func(-3,4,abs))

#7

 

把函数做为返回值:

def func(*args):
  def sum():
    a = 0
    for i in args:
      a += i
      return a
  return sum

x=func(1,2,3)
print(x)
print(x())

<function func.<locals>.sum at 0x00000000006E01E0>
6

 

闭包:

  一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。

  你在调用函数A的时候传递的参数就是自由变量。

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

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

 

9
9
9

 

def count1():
  def f(j):
    def g():
      return j*j
      return g
  fs=[]
  for i in range(1,4):
    fs.append(f(i))
  return fs

f1,f2,f3=count1()
print(f1())
print(f2())
print(f3())

 

1
4
9

 

posted @ 2016-09-23 21:36  xuanhui  阅读(223)  评论(0编辑  收藏  举报