第一段程式碼:
## -*- 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程式碼來執行
兩點:
雷雷