如何让全局变量影响Python函数?修复变量未定义报错
问题修复方案
错误原因
在你的代码中,函数dd()执行到c = input()时,Python会自动将c视为局部变量。但在这之前的if c == 1语句已经尝试读取这个未定义的局部变量,因此触发了"变量未定义"的错误。
修复方法
方法1:使用global关键字声明全局变量
通过global关键字明确告诉Python,函数内的c引用的是全局作用域中的变量,这样读取和赋值操作都会直接作用于全局变量:
c = 1 def dd(): global c # 声明c为全局变量 if c == 1: print("hi") c = 2 # 修改全局变量值,触发后续else分支 else: c = input() dd() dd()
方法2:将变量作为函数参数传递(推荐)
避免依赖全局变量,把c作为参数传入函数,递归调用时传递更新后的值,这种方式更符合代码设计的最佳实践,减少副作用:
def dd(c): if c == 1: print("hi") dd(2) # 传递新值触发else分支 else: new_c = input() dd(new_c) dd(1)
内容的提问来源于stack exchange,提问作者Lightning
相关产品推荐
相关产品推荐

