Использование обратных вызовов внутри функции обратного вызова - PullRequest
0 голосов
/ 27 апреля 2018

Учитывая следующие три функции:

def return_arg( *arg ):
    return arg[0]

def an_expression( x, y, **kwargs ):
    return x*x + y*y

def sub_function( x, y, F ): 
       return x + y + F(**locals())

Я могу позвонить по номеру sub_function( 1, 2, an_expression ), чтобы получить 8.

Я также могу позвонить:

T = 5
return_arg(T)

Как мне позвонить

sub_function( 1, 2, return_arg)

в случае, если я хочу иметь return_arg(T)?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Другой вариант - передать args и / или kwargs вашему оценщику обратного вызова

def sub_function( x, y, F, *args, **kwargs): 
       return x + y + F(*args, **kwargs)

Тогда вы можете звонить так, как хотите, например,

sub_function( 1, 2, return_arg, 5)
0 голосов
/ 27 апреля 2018

Я не уверен, что полностью понял ваш вопрос, но я думаю, что вам нужно частичная функция :

from functools import partial
my_partial = partial(return_arg, T)
sub_function( 1, 2, my_partial)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...