You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:05:27