如何在Python的main()函数中调用自定义函数?解决NameError报错
解决NameError: name 'list_A' is not defined错误
错误原因
你在main()函数里调用output_item_statistics(list_A, list_B, fh_out)时,list_A、list_B、fh_out这三个变量既没在main函数内部定义,也不存在于全局作用域,Python找不到这些变量的定义,所以抛出NameError。
修复步骤
1. 在main函数内定义所需变量
调用output_item_statistics前,先初始化list_A、list_B,并创建文件对象fh_out:
def main(): # 根据实际需求填充列表内容 list_A = ["item1", "item2", "item3"] list_B = ["N", "E", "T"] # 打开输出文件,这里用写入模式,可按需调整 with open("output.txt", "w") as fh_out: output_item_statistics(list_A, list_B, fh_out)
2. 补全缺失的辅助函数
原代码里用到的_get_item_number和_get_item_counts没有实现,得补上逻辑,示例如下:
def _get_item_number(input_list): # 示例:返回列表长度,可根据实际需求修改 return len(input_list) def _get_item_counts(target_char, input_list): # 示例:统计目标字符在列表中的出现次数,可按需修改 return input_list.count(target_char)
3. 修复语法错误
原代码中fh_out.write(...)末尾缺右括号,而且format占位符数量和参数不匹配,修正后:
fh_out.write("{0} {1} {2} {3} {4} \n".format(number, item_number, n_counts, e_counts, t_counts))
4. 触发main函数执行
在脚本末尾加上这段代码,确保程序运行时会调用main函数:
if __name__ == "__main__": main()
完整修复代码示例
def _get_item_number(input_list): return len(input_list) def _get_item_counts(target_char, input_list): return input_list.count(target_char) def output_item_statistics(list_A, list_B, fh_out): number = 0 for a, b in zip(list_A, list_B): number = number + 1 item_number = _get_item_number(list_A) n_counts = _get_item_counts('N', list_B) e_counts = _get_item_counts('E', list_B) t_counts = _get_item_counts('T', list_B) fh_out.write("{0} {1} {2} {3} {4} \n".format(number, item_number, n_counts, e_counts, t_counts)) def main(): list_A = ["item1", "item2", "item3"] list_B = ["N", "E", "T"] with open("output.txt", "w") as fh_out: output_item_statistics(list_A, list_B, fh_out) if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者sleepbug
相关产品推荐
相关产品推荐

