Flask接口签名sign原理与实例代码浅析
277
2022-08-24
python 提高代码效率篇
一日之计在于晨,不肝代码不封神~
前言
早晨肝代码的时候写了一个函数,用来匹配文本中的电话号码,其中有两个返回值,考虑到 调用函数时是先赋值再调用好,还是调用与赋值同时进行好? ,所以做了一个小测试,之前写代码过程中对于有多个返回值的函数我都是调用与赋值同时进行,因为代码量少。但结果到底如何,下面开始测试。
代码测试
# 导入需要的第三方库 import time # 第一次测试——调用与赋值同时进行 start_time = time.time() # 第一次起始时间 tel_mark = get_tel(content_split_rst)[0] text_index_li = get_tel(content_split_rst)[1] end_time = time.time() # 第一次结束时间 print("1 cost", end_time-start_time, "seconds") # 第二次测试——先赋值再调用 start_time = time.time() # 第二次起始时间 temp_var = get_tel(content_split_rst) tel_mark = temp_var[0] text_index_li = temp_var[1] end_time = time.time() # 第二次结束时间 print("2 cost", end_time-start_time, "seconds")
被调用的函数:
def get_tel(content_split_rst): # 不提供 content_split_rst tel_mark = 0 # 判断是否识别出电话的标记 # 设置正则表达式匹配规则 compile_str_li = [ '\(\d{3}\)\d{3}-\d{4}', # -> (212) 667-7024 '\d{3}-\d{3}-\d{4}', # -> 404-266-6613 '\d{3}/\d{3}-\d{4}', # -> 816/283-5352 '\d{6}-\d{4}', # -> 415 693-3337 '\(\+\d{5}\)\d{3}\d{4}', # -> (+44 171) 374 7262 '\(\d{12}\)', # -> (+44 171 568 4395) '\d{3}\.\d{3}\.\d{4}', # -> 212.389.8042 '\d\.\d{3}\.\d{3}\.\d{4}', # -> 1.415.229.7166 '\+\d{11}', # -> +39 026204238 '\+\d{10}', # -> +47 24 16 91 87 '\(\d{2}\)\d{8}', # -> (47) 2100 8527 '\d{10}' # -> 212 325 8681 ] compile_li = [re.compile(i, re.DOTALL) for i in compile_str_li] info_li = [] # 存储 tel信息 的列表 for text_index, text in enumerate(content_split_rst): info_dic = {} # 存储 tel信息的字典 text = text.replace(' ', '') # 去掉空格 rst = [re.findall(compile, text) for compile in compile_li] # 获得匹配结果 if any(rst): tel = list(filter(lambda x: x != [], rst))[0][0] # 保留符合非空列表,即 tel info_dic['tel'] = tel info_dic['index'] = text_index info_li.append(info_dic) del info_dic # 重置字典 tel_mark += 1 # 匹配到 tel 后标记值+1 return tel_mark, info_li
结果显示的确符合我的预期:先赋值再调用效率更高,而且足足快了近一倍
结论
==在使用的函数有多个返回值的时候先赋值再调用,而不是调用与赋值同时进行可以提高我们的代码效率==
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~