You need to enable JavaScript to run this app. Python中能否在函数内部调用自身?自制AI交互脚本无法重启流程问题
优惠活动
大模型
产品
解决方案
定价
更多

Python中能否在函数内部调用自身?自制AI交互脚本无法重启流程问题

问题原因及修复方案

你代码存在多个核心问题,按优先级排序如下:

  • 未主动调用AImain()函数:Python运行脚本时只会执行全局层级的代码,你只定义了函数没有调用,自然不会触发输入逻辑,脚本运行完函数定义就直接结束了
  • 变量名不匹配:你把用户输入存到了response变量里,但判断逻辑里用的是未定义的answer变量,运行到判断步骤会直接抛出变量未定义的报错
  • if判断逻辑语法错误:if 'Hello' or 'Hi' in answer: 的写法不符合Python的判断规则,实际会被解析为if ('Hello') or ('Hi' in answer),非空字符串的布尔值永远为True,不管用户输入什么都会匹配这个条件
  • 递归逻辑有风险:用递归调用AImain()实现循环交互,用户输入次数超过Python默认递归深度(一般是1000次)后会触发栈溢出报错,更适合用无限循环实现
  • 缺少必要的依赖声明:代码里用到了random模块和welcomeMessages列表,但没有导入模块、定义列表,运行会直接报错

修正后可运行代码示例

import random

# 提前定义欢迎语列表
welcomeMessages = ["你好呀!", "嗨~ 有什么我能帮你的吗?", "哈喽!"]

def AImain():
    # 启动先打招呼
    print("AI:你好,我是你的交互助手,可以和我聊天哦")
    # 用while循环实现重复交互,代替递归
    while True:
        response = input("YOU:")
        # 修正后的判断逻辑
        if 'Hello' in response or 'Hi' in response:
            print(f"AI:{random.choice(welcomeMessages)}")
        # 可以在这里加更多关键词判断分支
        # 比如判断退出关键词
        elif '退出' in response:
            print("AI:再见啦!")
            break

# 全局层级主动调用函数,才会执行里面的逻辑
AImain()

内容的提问来源于stack exchange,提问作者StoneNicolas93

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 03:36:11