voici un test simple de la fonction 'lambda' par rapport a une fonction utilisant 'global'

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Tkinter as tk
x=5
 
def ajout(x):
    x=x+2
    print 'x ajout ='+str(x)
 
def ajoutglob():
    global x
    x=x+2
    print 'x ajout ='+str(x)
 
 
print 'x initial=' +str(x)
 
root=tk.Tk()
tk.Button(root,text='Action 1',command=ajoutglob).grid()
tk.Button(root,text='Action 2',command=lambda x=x:ajout(x)).grid()
tk.Button(root,text='fermer',command=root.quit).grid()
root.mainloop()
 
root.destroy()
 
print 'x final='+str(x)
Je ne comprend pas du tout pourquoi le résultat est différent entre l'action du bouton 1 et du bouton 2.
peut être ai je pas compris l'interet de lambda????
qqu'un peut m'expliquer