Так вот код, который упрощает то, что я работал на:выделки функции в Python в цикле
vars = {
'a':'alice',
'b':'bob',
}
cnames = ['charlie', 'cindy']
commands = []
for c in cnames:
kwargs = dict(vars)
kwargs['c'] = c
print kwargs
commands.append(lambda:a_function(**kwargs))
print commands
def a_function(a=None, b=None, c=None):
print a
print b
print c
for c in commands:
print "run for "+ repr(c)
c()
А вот его вывод:
{'a': 'alice', 'c': 'charlie', 'b': 'bob'}
{'a': 'alice', 'c': 'cindy', 'b': 'bob'}
[<function <lambda> at 0x1001e9a28>, <function <lambda> at 0x1001e9e60>]
run for <function <lambda> at 0x1001e9a28>
alice
bob
cindy
run for <function <lambda> at 0x1001e9e60>
alice
bob
cindy
Я хотел бы ожидать, чтобы получить charlie, затем cindy, почему цинна отображается дважды?
круто, это теперь работает вары = { 'а': 'алиса', 'B': 'боб', } CNAMES = [ 'чарли', 'Cindy'] команд = [] для с в CNAMES: kwargs = Dict (вары) kwargs [ 'с'] = с печати kwargs commands.append (лямбда kwargs = kwargs: a_function (** kwargs)) печати команд def a_function (a = None, b = None, c = None):Распечатайте печать б печать с для с в командах: печать «прогон» + предст (с) с() – NorthIsUp
тьфу, не получил код привет освещения по какой-то причине нет. – NorthIsUp
Форматирование комментариев разочаровывает. –