如何将带有参数作为参数的函数传递给Python中的另一个函数?

图里奥·贡萨尔维斯(Tulio Goncalves)

我正在研究装饰器,并通过此示例进行了演示,无法弄清楚如何可以访问在wrapper_function中作为参数(函数display_info)发送的函数参数,而不必先接收在decorator_function上的参数。

(我想我了解* args和** kwargs的概念,但是在下面的示例中,decorator函数只能使用一个参数,但在访问* args内的包装器表示与display_info一起发送的参数)。

def decorator_function(originla_function):
    def wrapper_function(*args, **kwargs):
        #how wrapper accessed the arguments that weren't received on decorator_function
        print('wrapper executed before {}'.format(originla_function.__name__))
        return originla_function(*args, **kwargs)
    return wrapper_function

@decorator_function
def display_info(name, age):
    print('display_info has the following arguments ({}, {})'.format(name, age))

display_info('Bob', 29)
克里斯蒂安·丘皮图

您必须了解:

@decorator_function
def display_info(name, age):
    # ...

基本上就是:

def display_info(name, age):
    # ...

display_info = decorator_function(display_function)

decorator_functiondisplay_function功能转换为另一个功能。只能执行一次。就是这样,仅此而已。从现在开始,重要的是decorator_function返回的内容,而不是decorator_function为创建此新函数而如何调用。

现在,您的示例在幕后发生了什么?

@decorator_function
def display_info(name, age):

替换display_info为的结果decorator_function(display_info)什么decorator_function(display_info)回报?该功能:

def wrapper_function(*args, **kwargs):
    #how wrapper accessed the arguments that weren't received on decorator_function
    print('wrapper executed before {}'.format(display_info.__name__))
    return display_info(*args, **kwargs)

注意,我替换为originla_functiondisplay_info因为的originla_function参数decorator_function原始 display_info

所以运行display_info('Bob', 29)调用新的 display_info,即wrapper_function('Bob', 29)wrapper_function被称为像这样,*args将是('Bob', 29)**kwargs**{}

 return display_info(*args, **kwargs)

表示它返回调用原始 结果display_info更确切地说display_info(*('Bob', 29), **{}),与相同display_info('Bob', 29)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将参数数组传递给JavaScript中的另一个函数?

来自分类Dev

Lua-如何将对象的函数作为参数传递给另一个函数

来自分类Dev

如何将&rest参数传递给emacs lisp中的另一个函数?

来自分类Dev

如何将一个函数作为参数传递给另一个函数

来自分类Dev

如何传递具有参数作为另一个函数的参数的函数指针?

来自分类Dev

如何将以args作为参数的成员函数传递给另一个成员函数?

来自分类Dev

Python MYSQL tupple问题。如何将参数传递给另一个类中执行查询的函数

来自分类Dev

如何将可变函数参数作为参数传递给另一个函数?

来自分类Dev

如何将带有2个参数的函数作为参数传递给函数?

来自分类Dev

如何将带有对象引用的函数传递给另一个函数以执行

来自分类Dev

如何或可以将带有参数作为参数的函数传递给lua中的函数?

来自分类Dev

如何将tanh函数作为参数传递给另一个函数?

来自分类Dev

如何将一个函数作为参数传递给另一个通过React中的列表进行映射的函数?

来自分类Dev

如何将非静态成员函数作为模板参数传递给另一个成员函数?

来自分类Dev

Python:如何将函数作为参数传递给另一个函数,而不自动运行它

来自分类Dev

R-如何将一个函数作为参数传递给另一个函数?

来自分类Dev

Lua-如何将对象的函数作为参数传递给另一个函数

来自分类Dev

python函数作为参数传递给另一个函数

来自分类Dev

如何将函数数组作为参数传递给另一个函数,并在以后的函数中调用这些函数

来自分类Dev

如何执行将细节作为参数传递给另一个函数的函数

来自分类Dev

如何将函数作为参数传递给另一个函数?

来自分类Dev

如何将一个函数作为参数传递给Perl中的另一个函数,然后调用它?

来自分类Dev

如何将泛型函数作为参数传递给另一个函数?

来自分类Dev

测试作为参数传递给Jasmine中另一个函数的函数

来自分类Dev

如何将函数的所有参数传递给另一个命令?

来自分类Dev

如何将命名参数传递给另一个函数需要的函数?

来自分类Dev

将函数参数作为参数传递给python中的另一个函数

来自分类Dev

如何将参数传递给作为另一个函数参数的函数

来自分类Dev

将带有自动参数的 lambda 传递给另一个函数是否合法

Related 相关文章

  1. 1

    如何将参数数组传递给JavaScript中的另一个函数?

  2. 2

    Lua-如何将对象的函数作为参数传递给另一个函数

  3. 3

    如何将&rest参数传递给emacs lisp中的另一个函数?

  4. 4

    如何将一个函数作为参数传递给另一个函数

  5. 5

    如何传递具有参数作为另一个函数的参数的函数指针?

  6. 6

    如何将以args作为参数的成员函数传递给另一个成员函数?

  7. 7

    Python MYSQL tupple问题。如何将参数传递给另一个类中执行查询的函数

  8. 8

    如何将可变函数参数作为参数传递给另一个函数?

  9. 9

    如何将带有2个参数的函数作为参数传递给函数?

  10. 10

    如何将带有对象引用的函数传递给另一个函数以执行

  11. 11

    如何或可以将带有参数作为参数的函数传递给lua中的函数?

  12. 12

    如何将tanh函数作为参数传递给另一个函数?

  13. 13

    如何将一个函数作为参数传递给另一个通过React中的列表进行映射的函数?

  14. 14

    如何将非静态成员函数作为模板参数传递给另一个成员函数?

  15. 15

    Python:如何将函数作为参数传递给另一个函数,而不自动运行它

  16. 16

    R-如何将一个函数作为参数传递给另一个函数?

  17. 17

    Lua-如何将对象的函数作为参数传递给另一个函数

  18. 18

    python函数作为参数传递给另一个函数

  19. 19

    如何将函数数组作为参数传递给另一个函数,并在以后的函数中调用这些函数

  20. 20

    如何执行将细节作为参数传递给另一个函数的函数

  21. 21

    如何将函数作为参数传递给另一个函数?

  22. 22

    如何将一个函数作为参数传递给Perl中的另一个函数,然后调用它?

  23. 23

    如何将泛型函数作为参数传递给另一个函数?

  24. 24

    测试作为参数传递给Jasmine中另一个函数的函数

  25. 25

    如何将函数的所有参数传递给另一个命令?

  26. 26

    如何将命名参数传递给另一个函数需要的函数?

  27. 27

    将函数参数作为参数传递给python中的另一个函数

  28. 28

    如何将参数传递给作为另一个函数参数的函数

  29. 29

    将带有自动参数的 lambda 传递给另一个函数是否合法

热门标签

归档