标签:python lambda filter callback
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45269343
lambda函数也叫匿名函数,函数没有具体的名称。先来看一个最简单例子:
def f(x): return x * 2 g = lambda x : x * 2
但是lambda存在的意义是什么吗?其实很简单,简单来说, lambda 表达式通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用。
比如,在Python中有着几个内置函数,像 map,filter,reduce,我假设你了解它们的用法。
出个简单的不能再简单的编程题:打印100以内的为3的倍数的数。
你可能会这么写:
def func(): result = [] for i in xrange(100): if i % 3 == 0: result.append(i) return result
def func(x): return x%3 == 0 filter(func,[i for i in xrange(100)])
filter(lambda x:x%3==0,[i for i in xrange(100)])
基础的讲完了,下面看看项目中我们怎么用lambda的吧:
我们需要去查找某个玩家的数据(find_user_info),在这里面可能需要做很复杂的操作,比如查询数据库(query_database),然后对结果进行逻辑操作(deal_data):
def deal_data(result,fid): # 这是我们主要逻辑处理的地方,可能增加它的属性,减少它的属性,或者删除它。 ... def query_database(uid): result = ... return result def find_user_info(uid): result = query_database(uid) deal_data(result,uid)
我们可以用lambda做更通用的处理:
def modify_name(result,fid): ... def add_gold(result,fid): ... def query_database(uid): result = ... return result def find_user_info(uid,callback): result = query_database(uid) callback(result) find_user_info(uid,lambda result:deal_data(result,fid))
标签:python lambda filter callback
原文地址:http://blog.csdn.net/majianfei1023/article/details/45269343