suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Python-Neuling fragte nach anonymen Funktionen

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?

扔个三星炸死你扔个三星炸死你2726 Tage vor946

Antworte allen(3)Ich werde antworten

  • 怪我咯

    怪我咯2017-06-13 09:26:43

    第二段代码应该是:

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

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

    Antwort
    0
  • 滿天的星座

    滿天的星座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)

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-13 09:26:43

    funC = eval("lambda x,y:" + input("请输入函数"))
    num = test(11,22,funC)
    print(num)

    Antwort
    0
  • StornierenAntwort