You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
from cppy.cp_util import *
|
|
|
|
#
|
|
# 框架类
|
|
#
|
|
class TFFlowAll:
|
|
def __init__(self, func):
|
|
self._funcs = [func]
|
|
|
|
def bind(self, func):
|
|
self._funcs.append(func)
|
|
return self
|
|
|
|
def execute(self):
|
|
def is_callable(obj):
|
|
"""Check if an object is callable."""
|
|
return hasattr(obj, '__call__')
|
|
|
|
def call_if_possible(obj):
|
|
"""Call the object if it's callable, otherwise return it as is."""
|
|
return obj() if is_callable(obj) else obj
|
|
|
|
# Initialize the value to a no-op lambda function
|
|
value = lambda: None
|
|
for func in self._funcs:
|
|
value = call_if_possible(func(value))
|
|
print(call_if_possible(value))
|
|
|
|
#
|
|
# 工具函数
|
|
#
|
|
def get_input(arg):
|
|
def _f():
|
|
return testfilepath
|
|
return _f
|
|
|
|
def extractwords(path_to_file):
|
|
def _f():
|
|
return extract_file_words(path_to_file)
|
|
return _f
|
|
|
|
def frequencies(word_list):
|
|
def _f():
|
|
return get_frequencies(word_list)
|
|
return _f
|
|
|
|
def sort(word_freq):
|
|
def _f():
|
|
return sort_dict(word_freq)
|
|
return _f
|
|
|
|
def top10_freqs(word_freqs):
|
|
def _f():
|
|
return '\n'.join(f"{word} - {freq}" for word, freq in word_freqs[:10])
|
|
return _f
|
|
|
|
|
|
if __name__ == "__main__":
|
|
TFFlowAll(get_input)\
|
|
.bind(extractwords)\
|
|
.bind(frequencies)\
|
|
.bind(sort)\
|
|
.bind(top10_freqs)\
|
|
.execute() |