有这样的设计:
@dp.callback_query_handler(lambda c: c.data == 'button1')
async def process_callback_button(callback_query: types.CallbackQuery):
button_push = callback_query
await bot.answer_callback_query(callback_query.id, config.switch_button.get(button_push))
print(button_push.data)
push = button_push.data
button_request = config.switch_button.get(push)
print(button_request)
con = pymysql.connect(host='', user='', password='', database='testop')
with con:
cur = con.cursor()
cur.execute(button_request)
rows = cur.fetchone()
print(rows)
await bot.send_message(callback_query.from_user.id, rows)
除了装饰器,异步函数是迭代的!我把它放到一个单独的 funcp 文件中并进行调用,现在写入了无效的语法。如何用这个装饰器调用函数?我喜欢这样:
@dp.callback_query_handler(lambda c: c.data == 'button1')
async funcp.process_callback_button()
装饰器(不带参数)是一个函数,它接收一些函数作为输入,添加自己的功能(例如,在执行函数本身之前或之后执行一些代码)并返回一个新函数。
带参数的装饰器是一个返回装饰器的函数,装饰器反过来接受被装饰的函数,并以某种方式“修改”它(添加它的功能)。
这个设计:
相当于这段代码:
如果您需要调用具有不同装饰器的函数,您可以在调用之前使用所需的装饰器“创建”一个新函数:
如果你只需要一个函数,但是用不同的装饰器(或不同参数的相同装饰器)对它进行了多次修改,那么你可以这样写:
进一步已经有了function1,function2等。像常规函数一样工作。