Le code est le suivant :
# -*- coding:gb2312 -*-
def test(a,b,funC):
result = funC(a,b)
return result
funC = eval(input("请输入函数"))
num = test(11,22,funC)
print(num)
Exécuter comme suit :
Je saisis :
lambda x,y:x+y
ou
lambda x,y:x**y
les deux peuvent réussir et sans problème
Ma question est la suivante :
Les lettres après lambda sont x et y, qui sont différentes des a et b du funC(a,b) précédent
Pourquoi cela peut-il être vrai ?
En d’autres termes, pourquoi ne devrait-il pas être lambda a,b:a+b ? Les lettres que je saisis ne devraient-elles pas être les mêmes que les lettres ci-dessus ?
a, b
danslambda a,b:a+b
sont des paramètres formels et sont utilisés comme variables locales dans le corps de la fonction, tandis quex, y code> est utilisé comme variable locale dans le corps de la fonction, et la variable
peut être un paramètre réel
lambda a,b:a+b
中的a, b
是形参, 在函数体内用作局部变量, 而x, y
在函数体内用作局部变量, 变量可以为实参的.所以作为lambda
Elle est donc utilisée comme paramètre réel de l'expression de la fonctionlambda
. pas besoin d'être pareil