gpt4 book ai didi

python - 装饰器: how arguments are passed to wrapped function?

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:47 25 4
gpt4 key购买 nike

我有以下装饰器示例

def makeitalic(f):
def wrapped(*args, **kwargs):
return "<I>" + f(args[0]) + "</I>"
return wrapped

def myprint(text):
return text


myprint = makeitalic(myprint)
print myprint('hii')
<小时/>
Output:
<I>hii</I>

包装函数(内部函数)如何获取原始函数的参数?

最佳答案

包装后的函数无法获取原始函数的参数。它获取可以(并且通常确实)选择传递给原始函数的参数。

当您执行 myprint = makeitalic(myprint) 时,名称 myprint 现在指的是包装的函数。它不再引用之前定义为 myprint 的函数。

因此,当您调用 myprint('hii') 时,您正在调用包装的函数。原始函数还没有参数,因为它从未被调用过。

wrapped内,您调用f。这是原始函数,您传递给它args[0],即'hii'。所以,现在调用原来的函数。它获取包装函数的第一个参数,因为这是您选择传递它的参数。

关于python - 装饰器: how arguments are passed to wrapped function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com