如何解决来自Python中另一个函数的函数调用
我具有以下功能
def query_url_input() -> Dict:
# code
# fetch input from another url
return output_dict
def process_query(queryid: str) -> Dict:
d = query_url_input() # how to call this only once
# code uses requests/urllib with key value input of d + queryid to return results
value = results
return {queryid: value}
if __name__ == '__main__':
for item in ['1.2','w.2','c.q']
output = process_query(queryid=item)
在上面的示例代码中,函数process_query
被多次调用,而query_url_input
被调用
也被process_query
多次调用。但是对于所有调用,query_url_input
返回相同的输出。因此,我只想呼叫query_url_input
一次(第一次呼叫)并存储d
供以后的呼叫使用。我想征询有关如何使用Class
进行操作的建议。(我已经在MATLAB中使用类来执行类似的任务,但不确定如何在Python中完成此操作)。>
解决方法
您可以为此目的使用lru_cache装饰器(python> = 3.2)。您可以看到示例here。
import functools
@functools.lru_cache()
def query_url_input():
print("query_url_input")
output_dict = dict()
return output_dict
def process_query(queryid):
print("process_query")
d = query_url_input()
value = "Some results"
return {queryid: value}
if __name__ == '__main__':
for item in ['1.2','w.2','c.q']:
output = process_query(queryid=item)
输出:
process_query
query_url_input
process_query
process_query
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。