前言
学C数据结构的同学可能都需要经历一个表达式求值来巩固对栈的使用, 但是用Python的同学完全没有这个考虑,因为我们有匿名函数Lambda。
匿名函数有什么用?
众所周知,一个c程序运行后它要实现的功能已经是定下来的了,我们无法
通过输入或者其它操作对它进行改变,但是Python不同,匿名函数为我
们提供了一个机会。
匿名函数的使用
lambda 函数能接收任何数量的参数但只能返回一个表达式的值
lambda 参数 :表达式
匿名函数并不叫lambda,匿名函数没有名字,如果要使用匿名函数,需要使用一个变量来保存它
变量 = lambda 参数 :表达式
例子
func = lambda x,y :x+y
函数的调用
func(10,20)
这时我们得到的结果很明显是什么都没有,因为执行匿名函数后并没有变量来接收返回值,所以应该给予一个变量来接收返回值
result=func(10,20)
##这时函数执行的结果便由result来保存
我们要实现的表达式求值是根据我们键盘输入的表达式作为运算操作,
所以对于参数我们完全不必理会,因为执行只会执行我们输入的表达式。
表达式求值实战代码如下
func = input("请输入你要进行的运算:")
##python3的input输入的统一是一个字符串,这里我们输入要进行的表达式运算
##这里func只保存了你输入的字符串
a=b=1
##因为我们要实现的并不止两个数的操作,所以我可以把参数随机定义为一个常数
func = eval("lambda a,b :"+func)
##这步是整个代码的精髓所在,就是把字符串用eval来把它转换为python表达式
##使func保存的字符串的两个双引号去掉,成为一条独立的语句
##这里func= lambda a,b :func(取决于你之前输入的运算表达式字符串)
result=func(a,b)
##执行匿名函数函数并保存结果
##下面输出结果
print("result=",result)
运行输出
本期最短最简表达式求值分享就到这里,但是奉劝各位还是乖乖用C++打的好,oj是不会让你们过的!~~