2

したがって、私の質問は、以下の例の上部にあるデコレータに特に関係しています。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()
4

2 に答える 2

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

への呼び出しの*構文func(つまり、 ) は、受け取っdisplayPeopleたのと同じ位置引数を渡します。wrapper

wrapper実際にリストを返します。

デコレータの動作方法のため、 でwrapper作成された関数func = displayPeople の装飾されたバージョンですdisplayPeople

したがって、デコレータの効果は、装飾されたバージョンの が装飾されdisplayPeopleていないバージョンを呼び出し、返された値を小文字にして、それらをリストとして返すことです。

于 2013-10-27T23:40:37.223 に答える
0

3 行目はリスト内包表記です。for ループの代わりに使用できます。

func(*args)1 行目で渡されたタプルを展開しています。

于 2013-10-27T23:37:33.260 に答える