Heim > Fragen und Antworten > Hauptteil
Erster Code:
# -*- coding:gb2312 -*-
def test(a,b,funC):
result = funC(a,b)
return result
funC = eval(input("请输入函数"))
num = test(11,22,funC)
print(num)
Sie können anonyme Funktionen wie Lambda x,y:x+y in die Eingabe eingeben.
Jetzt habe ich das Gefühl, dass es zu mühsam ist, Lambda x,y:x+y einzugeben. Bei der Eingabe möchte ich den x+y-Teil direkt eingeben, also ändere ich den Code zu Folgendem:
Zweiter Code:
# -*- 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)
Nach dem Ändern von in:
Das Ergebnis ist der folgende Fehler.
Ich habe nicht alles auf einmal verstanden, ich weiß nicht, was es bedeutet.
Ich möchte fragen, warum kann ich das nicht so ändern?
Im ersten Teil des Codes:
funC = eval(input("请输入函数")) #运行时输入:lambda x,y:x+y
und im zweiten Codeteil:
funA = eval(input("请输入函数")) #运行时输入:x+y
funB = "lambda x,y:"
funC = eval(funB)+funC
Sollten diese beiden Codeteile nicht gleichwertig sein?
Warum kann Ersteres reibungslos ausgeführt werden, Letzteres meldet jedoch einen Fehler?
怪我咯2017-06-13 09:26:43
第二段代码应该是:
strA = input("请输入函数")
strB = "lambda x,y:"
funC = eval(strB+strA)
你输入的不是函数不是函数不是函数,输入的是字符窜。eval这个函数的作用是把你输入的字符串当成python代码来执行
滿天的星座2017-06-13 09:26:43
两点:
# -*- coding:gb2312 -*-
def test(a,b,funC):
result = funC(a,b)
return result
funA = input("请输入函数") #这儿改成 input("请输入函数")
funB = "lambda x,y:"
funC = eval(funB)+funC #这儿改成 eval(funB+funA)
num = test(11,22,funC)
print(num)
phpcn_u15822017-06-13 09:26:43
funC = eval("lambda x,y:" + input("请输入函数"))
num = test(11,22,funC)
print(num)