【发布时间】:2021-11-20 22:24:38
【问题描述】:
我有一本 Python 字典 篮子={水果:'苹果',蔬菜:'羽衣甘蓝'}
还有一个辅助函数,它在执行查询中看到水果和蔬菜的任何地方,都会分别用苹果和羽衣甘蓝替换它。
辅助功能:
def replaceQuery(self,query,**basket):
for key , value in basket.items():
if key in query:
query=query.replace(key,value)
return query
接下来,我使用从这个方法返回的查询并传递给执行方法
query =replaceQuery(query,basket)
executeQuery(Client, query)
执行方法如下:
def executeQuery(Client,query):
result=Client.query(query)
我一直在学习装饰器,想知道是否可以在 executeQuery() 上添加装饰器 方法,这样每次调用都会先替换查询字符串,替换掉所有水果和蔬菜的值。类似这样的东西
@replaceQuery
def executeQuery(Client,query)
......
......
在此过程中添加装饰器的任何帮助或建议都会有所帮助
【问题讨论】:
-
查询总是dict类型吗?
-
不,字典是有映射的篮子。查询是一个字符串。例如:select * from table where column1=fruit。
-
您没有将任何替换传递给
replaceQuery()。如果你打算使用全局变量basket,它不应该是函数参数。 -
否则应该是
query = replaceQuery(query, **basket) -
当您执行此替换时,它不会在查询中将
kale放在引号中。
标签: python python-3.x python-2.7 decorator