03月21, 2019

【朝花夕拾】函数

函数可以赋值给变量

玩过游戏的都知道,我们通常不会直呼某个技能的名字,例如LOL中,常常用QWER来说某个召唤师的四个技能,每个技能就相当于一个函数,可以赋值给QWER,python中函数是可以赋值给变量的。

def func_add(x, y):
    return x + y
f = func_add
print id(f)
print id(func_add)

高阶函数

一个高阶函数可以接收其他的函数作为一个参数传进来。玩过LOL的应该知道蛤蟆这个英雄。他有个技能就是吞人,然后扔出来,蛤蟆其实就是一个高阶函数,直接调用另一个英雄(英雄作为一个函数来看)。

def func_add(x, y):
    return x + y

def func_high(func, x, y):
    return func(x, y)

print func_high(func_add, 1, 2)

匿名函数

“不要问我是谁,请叫我雷锋”。匿名函数就是干这种活的,不需要显式地去def就能搞出来一个函数。

add = lambda x,y: x + y
print add(1, 2)

闭包

官方解释:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。

def closure(x):
    def func_double():
        return x*2
    return func_double
c = closure(1)
print c
print c()

本文链接:http://www.yuqiaochuang.com/post/【朝花夕拾】函数.html

-- EOF --

Comments

""