Я пытаюсь получить мою голову вокруг этого фрагмента:питона: understaning частичные функции
def a_func(a, b, c):
print "a: %s\nb: %s\nc: %s" %(a, b, c)
def partial(fn, *args):
print "Args in partial : %s" %str(args)
def fn_part(*fn_args):
print "fn_args in fn_part : %s" %fn_args
return fn(*args+fn_args)
return fn_part
print_fn = partial(a_func, 'A', 'B')
print_fn('C')
Выход:
Args in partial : ('A', 'B')
fn_args in fn_part : C
a: A
b: B
c: C
Как течёт здесь контроль?
объект функции print_fn
указывает на fn_part
, но также имеет некоторые переменные предопределенные (a
и b
). Как я могу просмотреть переменные, которые уже определены для функции?
Не знаете, что вы просите. '* args' является кортежем уже определенных значений, которые передаются в' fn() ', когда вызывается' fn_part() '. Вы * уже * печатаете это. –
'a_func' нуждается в трех переменных. Мы уже определили 'a' и' b'. Что, если я хочу изменить их? 'print_fn ('a2,' b2 ',' c ')' дает ошибку. –
Вы не можете, не с этой настройкой; закрытие 'args' не может быть заменено. –