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

Python代码报错:name 'previous_sentence'在全局声明前使用求助

解决SyntaxError: name 'previous_sentence' is used prior to global declaration

这个错误的原因很明确:Python要求,如果你要在函数内使用并修改全局变量,必须在函数内第一次使用该变量之前声明global 变量名。你的代码里先在while循环中读取了previous_sentence,之后才声明global,这违反了语法规则,导致报错。

修正后的代码

import random

previous_sentence = ''

def create_sentence():
    global previous_sentence  # 将global声明移到函数开头,提前告知Python使用全局变量
    names = ["x", "y", "z"]
    designations = ["a", "b", "c"]
    sentence = '' 
    while sentence == previous_sentence:
        name = random.choice(names)
        designation = random.choice(designations)
        sentence = f'{name} ist ein {designation}'
    previous_sentence = sentence
    return sentence

for i in range(10):
    print(create_sentence())

补充说明

调整global声明的位置后,函数会明确识别到previous_sentence是全局变量,不管是读取循环判断还是后续赋值修改,都能正常执行。如果后续想让代码更模块化,也可以考虑用函数默认参数或者类属性替代全局变量,但当前场景下,修正global的位置就能直接解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:35:54