Python-Neuling fragte nach anonymen Funktionen
扔个三星炸死你
扔个三星炸死你 2017-06-13 09:24:43
0
3
940

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?

扔个三星炸死你
扔个三星炸死你

Antworte allen(3)
刘奇

第二段代码应该是:

strA = input("请输入函数")
strB = "lambda x,y:"
funC = eval(strB+strA)

你输入的不是函数不是函数不是函数,输入的是字符窜。eval这个函数的作用是把你输入的字符串当成python代码来执行

滿天的星座

两点:

# -*- 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_u1582
funC = eval("lambda x,y:" + input("请输入函数"))
num = test(11,22,funC)
print(num)
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage