Novice en Python interrogé sur les fonctions anonymes
扔个三星炸死你
扔个三星炸死你 2017-06-13 09:24:43
0
3
977

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 ?

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

répondre à tous(3)
刘奇

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

滿天的星座

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)
phpcn_u1582
funC = eval("lambda x,y:" + input("请输入函数"))
num = test(11,22,funC)
print(num)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal