[FSUG PD] oops! la versione corretta è questa:
alessandro medici
alexxandro.medici a gmail.com
Lun 8 Feb 2016 15:21:36 CET
import functools
print()
print(1)
def funzEsterna(x, y, z):
print(2)
print('sono in funzEsterna', funzEsterna, 'con x,y,z = ', x, y, z)
def mioDecoratore(funz):
print(3)
print('sono in mioDecoratore ',mioDecoratore,' per ', funz, " con
x,y,z = ", x, y, z)
@functools.wraps(funz)
def mioWrapper(uno, due):
print(4)
print('sono in mioWrapper !!! ', mioWrapper, ' per ', funz, "
con due, uno = ", due, uno)
funz(due * y, uno * z)
print(5)
return mioWrapper
print(6)
return mioDecoratore
c = 1
d = 2
e = 3
print(7)
@funzEsterna(c, d, e)
def foo(a, b):
print(8)
print('sono in foo ', foo,' con a, b =', a, b)
print
return print()
print(10)
print('chiamo !!!',foo,' con 12, 23')
foo(12, 23)
print(11)
print('chiamo !!!',foo,' con 33, 44')
foo(33, 44)
print(12)
'''
1
7
2
sono in funzEsterna <function funzEsterna at 0x7ff355f18f28> con x,y,z = 1
2 3
6
3
sono in mioDecoratore <function funzEsterna.<locals>.mioDecoratore at
0x7ff355da89d8> per <function foo at 0x7ff355da8a60> con x,y,z = 1 2 3
5
10
chiamo !!! <function foo at 0x7ff355da8ae8> con 12, 23
4
sono in mioWrapper !!! <function foo at 0x7ff355da8ae8> per <function
foo at 0x7ff355da8a60> con due, uno = 23 12
8
sono in foo <function foo at 0x7ff355da8ae8> con a, b = 23 12
9
11
chiamo !!! <function foo at 0x7ff355da8ae8> con 33, 44
4
sono in mioWrapper !!! <function foo at 0x7ff355da8ae8> per <function
foo at 0x7ff355da8a60> con due, uno = 44 33
8
sono in foo <function foo at 0x7ff355da8ae8> con a, b = 44 33
9
12
alex a del:~$ vim decoratori_con_variabili.py
alex a del:~$ python3 decoratori_con_variabili.py
1
7
2
sono in funzEsterna <function funzEsterna at 0x7f654500d9d8> con x,y,z = 1
2 3
6
3
sono in mioDecoratore <function funzEsterna.<locals>.mioDecoratore at
0x7f654500da60> per <function foo at 0x7f654500dae8> con x,y,z = 1 2 3
5
10
chiamo !!! <function foo at 0x7f654500db70> con 12, 23
4
sono in mioWrapper !!! <function foo at 0x7f654500db70> per <function
foo at 0x7f654500dae8> con due, uno = 23 12
8
sono in foo <function foo at 0x7f654500db70> con a, b = 46 36
9
11
chiamo !!! <function foo at 0x7f654500db70> con 33, 44
4
sono in mioWrapper !!! <function foo at 0x7f654500db70> per <function
foo at 0x7f654500dae8> con due, uno = 44 33
8
sono in foo <function foo at 0x7f654500db70> con a, b = 88 99
9
12
'''
output:
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.fsugpadova.org/pipermail/fsug-pd/attachments/20160208/22fa5b3a/attachment.htm>
Maggiori informazioni sulla lista
fsug-pd