gpt4 book ai didi

python - 这个 Python 装饰器内部发生了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:36 24 4
gpt4 key购买 nike

所以我的问题专门针对下面示例顶部的装饰器。我不明白 lowercasedecorator 函数的第 3 行。我很困惑为什么它返回一个列表,如果它在那些方括号中,就意味着它是一个列表,对吧?另外,我不完全理解“func(*args)”那一行的结尾,这是否意味着“func”的任意参数(在本例中是 displayPeople)?

def lowercasedecorator(func):
def wrapper(*args):
return [i.lower() for i in func(*args)]
return wrapper

class People():
totalpeople = 0
def __init__(self, name, age, phone):
self.name=name
self.age=age
self.phone=phone
People.totalpeople += 1

@lowercasedecorator
def displayPeople(self):
return self.name, self.age, self.phone

ben = People("bEn", "20", "5034950293")

print ben.displayPeople()

最佳答案

def wrapper(*args):
return [i.lower() for i in func(*args)]

*调用 func 的语法(即 displayPeople )传递与 wrapper 相同的位置参数收到。

wrapper确实返回一个列表。

由于装饰器的工作方式,函数 wrapper使用 func = displayPeople 创建 displayPeople 的装饰版本.

所以,装饰器的效果就是displayPeople的装饰版调用未修饰的版本,小写返回值,并将它们作为列表返回。

关于python - 这个 Python 装饰器内部发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624948/

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