python - 从 main() 中提取两个或三个较小的函数以更轻松地查找错误
问题描述
我想从较大的 main 函数中提取较短的函数,以使其更具可读性并且更容易在不删除功能的情况下找到错误
我正在考虑将其拆分为中间,如“def calc_mean():”所示。但是问题是此函数中未定义数据等。我应该如何更改这些以便原始程序仍然可以工作,尽管被分为2?
解决方案
这是一个永无止境的循环。
user_input
调用main
,然后main
调用user_input
,然后user_input
调用main
等等。
修复 1
filename = input(user_input())
从主函数中删除并作为filename
参数从user_input
. 在这种情况下,整个脚本应该首先调用user_input
函数。
修复 2
filename = input(user_input())
使用filename = user_input()
调整功能删除,user_input
因此它只会要求用户输入,然后返回该输入。在这种情况下,脚本应该首先调用main
函数。
此外,在脚本的底部应该是
if __name__ == '__main__': # not `main`
call_some_function()
更新
def user_input(): # adjust this if you need
filename = input()
return filename
def read_data(filename):
data = dict()
with open(filename, 'r') as h:
for line in h:
four_vals = line.split(',')
batch = four_vals[0]
if not batch in data:
data[batch] = []
data[batch] += [(float(four_vals[1]), float(four_vals[2]), float(four_vals[3]))]
return data
def calc_mean(sample):
if len(sample) == 0:
return
n = 0
x_sum = 0
for (x, y, val) in sample:
if x**2 + y**2 <= 1:
x_sum += val
n += 1
average = x_sum / n
return average
def main():
'''
This is the main body of the program.
'''
filename = user_input()
data = read_data(file_name)
for batch, sample in data.items():
average = calc_mean(sample)
if average is not None:
print(f"{batch}\t{average}")
else:
print(f"{batch}\t{No data}")
推荐阅读
- python - 如何发出 API 请求?
- c# - 继承层次结构中的虚拟键、覆盖键和新键
- css - 在其父级的 100% 高度创建一个 div
- jquery - Laravel 页面速度分析
- python - NotFound:404 未找到(错误代码:10011):未知角色
- javascript - 使用 Grunt 任务运行器时未找到任务错误
- javascript - 使用自定义数据和布局属性以编程方式创建图标
- react-native - ReactNative 问题与构造函数说';' 错误
- java - 使用 Rest Assured 和 TestNG 处理异常/失败
- three.js - 相交网格结果与整体网格