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 ?
Le deuxième code devrait être :
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
Deux points :