1、统计词频
# 统计词频 def words_count(str): str_list = str.replace(' ','').lower().split(' ') count_dict = {} # 如果字典里已经存在这个单词,则count+1 # 如果没有则放入字典 for str in str_list: if str in count_dict.keys(): count_dict[str] = count_dict[str] + 1 else: count_dict[str] = 1 count_list = sorted(count_dict.items(),key=lambda x:x[1],reverse=True) return count_list str_txt = """hello world hello""" print(words_count(str_txt))
#注意用split切割的时候 不要忘记加空格
#否则会报错ValueError: empty separator
#正确运行的结果
[('hello', 2), ('world', 1)]
2、类装饰器
首先要知道__init__方法的执行是由创建对象触发的,而__call__方法的执行是由对象后加括号触发的。
class ClsDeco(object): def __init__(self,fun): self.fun = fun def __call__(self, *args, **kwargs): print('为函数添加额外的功能') self.fun() @ClsDeco # test = ClsDeco(test) def test(): print('test') test()
# 运行结果
为函数添加额外的功能
test