Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Пожалуйста, помогите понять кусок кода

import discord
client = discord.Client() client.login('email', 'password')
@client.event def on_message(message): if message.content.startswith('!hello'): client.send_message(message.channel, 'Hello was received!')
@client.event def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------')
client.run()
Как работают @client.event и как называется подобная конструкция?


Ответ

Эта конструкция называется декоратором
Действует она следующим образом. Если @decorator - некоторый декоратор, то следующая конструкция
@decorator def f(args): # . . .
будет преобразована в такую:
def f(args): # . . .
f = decorator(f)
То есть, в данном случае декоратор - некоторая функция, преобразующая свой аргумент.
P.S. Декораторы в Python - довольно обширная тема. Если хотите разобраться в ней поподробнее, почитайте 38-ю главу книги
Лутц М. Изучаем Python, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 1280 с., ил. ISBN 978-5-93286-159-2

Комментариев нет:

Отправить комментарий