python关键字匹配_Python 如何通过关键字调用函数并传参,附参考代码

参考一个微信开发的代码,通过关键字关联到函数去执行,我运行后 刚刚测试居然好使,发出来大家讨论下有啥优化的地方!

代码如下

# -*- coding: utf-8 -*-

# python3.6

# 小程序获取二维码示例

from bottle import response,route,run,template,request,redirect

from bottle import get, post# or route

import urllib

import urllib.parse as up

import urllib.request as ur

import xml.etree.ElementTree as ET

import json,time,os,re

import hashlib

import requests

# from wx_api import *

# from wx_config import *

from wechatpy import parse_message

msg_type_resp = {}

class message():

type="text"

content="取消"

def set_msg_type(msg_type):

"""

储存微信消息类型所对应函数(方法)的装饰器

"""

def decorator(func):

msg_type_resp[msg_type] = func

return func

return decorator

@set_msg_type('text')

def text_resp():

"""文本类型回复"""

# 默认回复微信消息

response = 'success'

# 替换全角空格为半角空格

message.content = message.content.replace(u' ', ' ')

# 清除行首空格

message.content = message.content.lstrip()

# 指令列表

commands = {

u'取消': cancel_command,

u'^\?|^?': all_command

}

# 匹配指令

command_match = False

for key_word in commands:

if re.match(key_word, message.content):

# 指令匹配后,设置默认状态

response = commands[key_word]()

command_match = True

break

if not command_match:

# 匹配状态

state = get_user_state(openid)

# 关键词、状态都不匹配,缺省回复

if state == 'default' or not state:

response = command_not_found()

else:

response = state_commands[state]()

return response

def cancel_command():

print('cancel_command')

def all_command():

print('all_command')

def index():

try:

get_resp_func = msg_type_resp[message.type]

response = get_resp_func()

except KeyError:

# 默认回复微信消息

response = 'success'

# 储存微信消息类型所对应函数(方法)的字典

print(index())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值