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

如何修复Python中Hello World!重复输出的Bug?

修复Python代码中Hello World!重复打印的问题

你的代码出现Hello World!重复打印的Bug,核心原因是clear()函数没有正确清空全局的messages列表,而是创建了同名局部变量,导致全局列表的内容被保留。

问题分析

  • 在clear()函数内,messages = []会创建一个局部变量,而非修改全局的messages列表。执行clear()后,全局messages仍然包含之前添加的"Hello world!"。
  • 后续调用msg("The terminal is cleared")时,新消息被追加到全局列表中,此时列表包含两个元素:"Hello world!"和"The terminal is cleared",render()遍历列表时会打印这两个内容,表现为Hello World!重复出现。

修复方案

有两种可行的修复方式:

方式1:使用global关键字声明全局变量

修改clear()函数,明确指定操作全局的messages:

import os
import time

messages = []

def render():
    os.system("cls")
    for msg in messages:
        print(msg)

def msg(message: str):
    messages.append(message)
    render()

def clear():
    global messages  # 声明使用全局变量
    messages = []
    os.system("cls")

msg("Hello world!")
time.sleep(3)
clear()
msg("The terminal is cleared")

方式2:直接清空全局列表(无需global)

通过clear()方法清空现有列表的内容,而不是重新赋值:

def clear():
    messages.clear()  # 清空全局列表的所有元素
    os.system("cls")

修复效果

修改后,clear()会正确清空全局messages列表,后续msg()添加的新消息会成为列表唯一元素,render()只会打印当前消息,不会出现重复输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:35:23