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
相关产品推荐
相关产品推荐

