File tree Expand file tree Collapse file tree 1 file changed +64
-0
lines changed
Expand file tree Collapse file tree 1 file changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python
2+
3+
4+ def closure1 ():
5+ flist = []
6+
7+ for i in xrange (3 ):
8+ def func (x ):
9+ return x * i
10+ flist .append (func )
11+
12+ for f in flist :
13+ print f (2 )
14+
15+
16+ def closure2 (msg ):
17+ def printer ():
18+ print msg
19+ return printer
20+
21+
22+ def not_closure2 (msg ):
23+ def printer (msg = msg ):
24+ print msg
25+ return printer
26+
27+
28+ def generate_power_func (n ):
29+ def nth_power (x ):
30+ return x ** n
31+ return nth_power
32+
33+
34+ def outer ():
35+ d = {'y' : 0 }
36+
37+ def inner ():
38+ d ['y' ] += 1
39+ return d ['y' ]
40+ return inner
41+
42+
43+ def foo ():
44+ a = [1 , ]
45+
46+ def bar ():
47+ a [0 ] = a [0 ] + 1
48+ return a [0 ]
49+ return bar
50+
51+
52+ if __name__ == '__main__' :
53+ closure1 ()
54+ printer = closure2 ('Foo!' )
55+ printer ()
56+ printer = not_closure2 ('Foo!' )
57+ printer ()
58+ raised_to_4 = generate_power_func (4 )
59+ del generate_power_func
60+ print raised_to_4 (2 )
61+ outer = outer ()
62+ print outer ()
63+ foo = foo ()
64+ print foo ()
You can’t perform that action at this time.
0 commit comments