Python中NameError求助:变量'anekdot'未定义如何解决?
问题解决:NameError: name 'anekdot' is not defined
错误原因
你把global anekdot写在了函数外面,这完全起不到作用。global关键字必须放在函数内部,用来声明“我要修改的是全局作用域里的变量”。否则函数里的anekdot会被当成局部变量,函数执行完后这个局部变量就销毁了,全局作用域里根本不存在anekdot,自然会触发NameError。
另外你的代码里没写import random,运行时也会报错,这个细节别漏了。
修正方案1:正确使用全局变量
把global声明移到函数内部,同时补全random导入:
import random # 先定义你的段子列表 anekdots = ["今天天气不错", "程序员的头发是可再生资源", "Python真好用"] def randanek(): global anekdot # 在这里声明要使用全局变量 anekdot = random.choice(anekdots) randanek() textaneka = anekdot print(textaneka)
修正方案2:更推荐的返回值写法
全局变量容易让代码逻辑混乱,更稳妥的方式是让函数直接返回随机元素,避免全局变量的使用:
import random anekdots = ["今天天气不错", "程序员的头发是可再生资源", "Python真好用"] def randanek(): return random.choice(anekdots) # 直接调用函数获取返回值 textaneka = randanek() print(textaneka)
内容的提问来源于stack exchange,提问作者7xrv
相关产品推荐
相关产品推荐

