ich wollte gerne Funktionen bauen, etwa so:
Code: Alles auswählen
liste1 = []
for zahl in (1,2,3,4):
def funktion():
print(zahl)
liste1.append(funktion)
random.choice(liste1)()
(ich verwende python 3.1.3)
gruß
Code: Alles auswählen
liste1 = []
for zahl in (1,2,3,4):
def funktion():
print(zahl)
liste1.append(funktion)
random.choice(liste1)()
Code: Alles auswählen
>>> from __future__ import print_function
>>> f = print
>>> import random
>>> f(random.choice(xrange(1, 5)))
1
>>> f(random.choice(xrange(1, 5)))
2
>>> f(random.choice(xrange(1, 5)))
4
>>> f(random.choice(xrange(1, 5)))
3
>>> f(random.choice(xrange(1, 5)))
2
Code: Alles auswählen
In [17]: def decorate(value):
....: def foo():
....: print(value)
....: return foo
....:
In [18]: funcs = map(decorate, range(5))
In [19]: funcs
Out[19]:
[<function foo at 0x010D3DF0>,
<function foo at 0x010D3CF0>,
<function foo at 0x010D3C30>,
<function foo at 0x010D3F30>,
<function foo at 0x010DC030>]
In [20]: choice(funcs)()
4
In [21]: choice(funcs)()
0
Code: Alles auswählen
>>> funcs = []
>>> for zahl in range(4):
... def func(zahl=zahl):
... print zahl
... funcs.append(func)
...
>>> funcs[0]()
0
>>> funcs[1]()
1
Code: Alles auswählen
>>> import functools
>>> funcs = []
>>> for zahl in range(4):
... def func(zahl):
... print zahl
... funcs.append(functools.partial(func, zahl))
...
>>> funcs[0]()
0
>>> funcs[1]()
1