第一段代码:
# -*- coding:gb2312 -*- def test(a,b,funC): result = funC(a,b) return result funC = eval(input("请输入函数")) num = test(11,22,funC) print(num)
在input当中可以输入类似 lambda x,y:x+y 这样的匿名函数。
现在我觉得输入lambda x,y:x+y太麻烦,我想把前面的lambda x,y:这一段给直接写上去,input输入的时候,直接输入x+y这一个部分,于是我把代码改成如下:
第二段代码:
# -*- coding:gb2312 -*- def test(a,b,funC): result = funC(a,b) return result funA = eval(input("请输入函数")) funB = "lambda x,y:" funC = eval(funB)+funC num = test(11,22,funC) print(num)
改成之后,我运行程序:
结果报出如下错误。
一下子没看懂,不知道这里是什么意思。
我想问,为什么我这样改不行呢?
第一段代码当中的:
funC = eval(input("请输入函数")) #运行时输入:lambda x,y:x+y
和第二段代码当中的:
funA = eval(input("请输入函数")) #运行时输入:x+y funB = "lambda x,y:" funC = eval(funB)+funC
这两段代码不应该是等价的么?
为什么前者可以顺利执行,后者会报错?
第二段代码应该是:
你输入的不是函数不是函数不是函数,输入的是字符窜。eval这个函数的作用是把你输入的字符串当成python代码来执行
两点:
雷雷