有C#的基础学习python还是挺快的,一天看到了函数,在此仅记录学习,好心的你如果看到了请不吝赐教指正我的错误。
lambda函数的使用
可以是f=lambda name: lambda name: print(name,“在画画”))
调用f(name)
也可以是如下:
def ReadBook(name):
return print("{}在读书".format(name))
def DoHomeWork(name):
return print("{}在做作业".format(name))
while True:
name = input("请输入名字:\n")
if name == "stop":
break;
dosomething = input("请选择做的事情:R => 读书 , D => 做作业, W => 在画画\n" )
if dosomething == "R":
ReadBook(name)
elif dosomething == "D":
DoHomeWork(name)
elif dosomething == "W":
(lambda name: print(name,"在画画"))(name)
else: print("不做事")
上面这总要是事件一多就显得麻烦,我们可以用类似C#中委托的东西来做,如下:
def ReadBook(name):
return print("{}在读书".format(name))
def DoHomeWork(name):
return print("{}在做作业".format(name))
operation = {
'R':ReadBook, # 这里要是加了()就会直接运行,不加()表示引用
'D':DoHomeWork,
'W':(lambda name: print(name,"在画画")),
}
while True:
name = input("请输入名字:\n")
if name == "stop":
break;
dosomething = input("请选择做的事情:R => 读书 , D => 做作业, W => 在画画\n" )
operation.get(dosomething, lambda name:print(name,'不做事'))(name)
看到没有,简直不要太好用啊,这字典+lambda,完美。。
还可以这样:
def ReadBook(name):
return print("{}在读书".format(name))
def DoHomeWork(name):
return print("{}在做作业".format(name))
def DoSth(action, name):
action(name)
DoSth(ReadBook, name="hehe")
DoSth(DoHomeWork, 'sss')
DoSth(lambda name:print(name,'在画画'), '大爷')
用DoSth统一调用还不错啊,把函数当参数一样来传,引用。python本身自带这个功能,很强。。。ok收工