如何解决Python代码运行时的NameError: 'colour'未定义报错
错误产生原因
- 代码中所有为
colour变量设定取值的分支,全部误用了相等判断运算符==,而非变量赋值运算符=。 - Python执行
==逻辑时仅会读取两侧的值做相等性对比,全程不会创建、绑定任何变量,因此函数运行过程中从未在函数作用域内真正定义colour这个标识符。 - 这类笔误在语法层面完全合法,Python不会在代码加载阶段做语法报错;直到运行到引用
colour的步骤时,Python在当前作用域找不到对应的变量定义,就会抛出变量未定义的报错(实际运行中这类代码通常会在首次执行colour == 'xxx'的分支时触发未绑定局部变量报错,本质根因和变量从未被赋值创建完全一致)。
完整修正方案
- 将所有分支内的
colour == 'xxx'语句中的双等号替换为单等号的赋值运算符,保证每个分支执行时都会正常完成colour变量的定义与赋值。 - 修正后的可正常运行代码:
def image(version): if version == 'A': colour = 'red' elif version == 'B': colour = 'green' else: colour = 'yellow' print(colour) image('A')
- 代码运行后将正常输出
red,不会触发变量未定义相关的报错。
内容的提问来源于stack exchange,提问作者TryingLightning
相关产品推荐
相关产品推荐

