Maison  >  Questions et réponses  >  le corps du texte

Novice en Python interrogé sur les fonctions anonymes

Premier code :

# -*- coding:gb2312 -*-
def test(a,b,funC):
    result = funC(a,b)
    return result

funC = eval(input("请输入函数"))
num = test(11,22,funC)
print(num)

Vous pouvez saisir des fonctions anonymes comme lambda x,y:x+y dans l'entrée.
Maintenant, je pense qu'il est trop difficile de saisir lambda x,y:x+y. Je veux écrire directement le lambda x,y: précédent. Lors de la saisie, saisissez directement la partie x+y, donc je mets Changer le code. au suivant :

Deuxième 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)
Après avoir changé

en :

Le résultat est l'erreur suivante.
Je n’ai pas tout compris d’un coup, je ne sais pas ce que ça veut dire.
Je veux demander, pourquoi ne puis-je pas le changer comme ça ?
Dans le premier morceau de code :

funC = eval(input("请输入函数")) #运行时输入:lambda x,y:x+y

et dans le deuxième morceau de code :

funA = eval(input("请输入函数"))  #运行时输入:x+y
funB = "lambda x,y:"
funC = eval(funB)+funC

Ces deux morceaux de code ne devraient-ils pas être équivalents ?
Pourquoi le premier peut-il être exécuté sans problème alors que le second signalera une erreur ?

扔个三星炸死你扔个三星炸死你2685 Il y a quelques jours914

répondre à tous(3)je répondrai

  • 怪我咯

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

    Le deuxième code devrait être :

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

    Ce que vous avez entré n'est pas une fonction, pas une fonction, pas une fonction. Ce que vous avez entré est un changement de caractère. La fonction de eval est de traiter la chaîne que vous saisissez comme un code python et de l'exécuter

    répondre
    0
  • 滿天的星座

    滿天的星座2017-06-13 09:26:43

    Deux points :

    # -*- 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)

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-06-13 09:26:43

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

    répondre
    0
  • Annulerrépondre