Python—函数进阶篇

lambda表达式(匿名函数表达式)

作用:创建一个匿名函数对象。同def类似,但不提供函数名。

语法:lambda [形参1,形参2,...] : 表达式

语法说明

  • lambda 只是一个表达式,它用来创建一个函数对象。
  • 当lambda表达式调用时,先执行冒号后的表达式,并返回表达式的结果的引用。
  • lambda 表达式创建的函数只能包含一条表达式。
  • lambda 表达式比函数简单,且可以随时创建和销毁,有利于减少程序的偶合度。

把lambda函数赋值给一个变量

# 定义一个加法函数,并把值赋给变量myadd,就可以执行myadd(5, 6);
myadd = lambda x, y: x+y
print myadd(5, 6)      # 结果:11

把lambda函数赋值给其他函数

import time, datetime
time.sleep
= lambda x: None # time 库的 sleep 函数不会执行原功能;
starttime = datetime.datetime.now() time.sleep(3) endtime = datetime.datetime.now() print endtime-starttime # 结果:0:00:00

把lambda函数作为其他函数的返回值

def add(n):
    return lambda x: x+n
myadd = add(5)
print myadd(15)      # 结果:20

def add(x):
    def inner(y):
        return x+y
    return inner
myadd = add(5)
print myadd(15)      # 结果:20

把lambda函数做参数传给其它函数(map, filter, reduce)

# 利用map映射函数输出序列加工后的新序列。
print map(lambda x: x ** 2, range(1, 3))      # 结果:[1, 4]   map返回类型:<type 'list'>
def arr(x):
    return x ** 2
print map(arr, range(1, 3))                   # 结果:[1, 4]   map返回类型:<type 'list'>

# 利用filter过滤函数输出0-9的奇数;返回False时将此数据丢弃,返回True,则保留此数据
print filter(lambda x: x % 2, range(10))      # 结果:[1, 3, 5, 7, 9]   filter返回类型:<type 'list'>
def odd(x):
    return x % 2
print filter(odd, range(10))                  # 结果:[1, 3, 5, 7, 9]   filter返回类型:<type 'list'>

eval和exec函数

高阶函数 

猜你喜欢

转载自www.cnblogs.com/liuhaidon/p/11643331.html