为何Python函数执行后输出包含初始变量值?代码疑问解析
函数内修改薪资后全局变量未变化的原因
这是变量作用域的问题,核心是你函数里的salary和全局的salary根本不是同一个变量:
- 你在函数外部定义的
salary = 8000是全局变量,它的作用范围覆盖整个代码文件,但函数内部直接写salary = 12000时,Python会默认创建一个新的局部变量——这个变量只在printSalary()函数内部有效,和外面的全局变量毫无关联。 - 调用
printSalary()时,函数里打印的是自己创建的局部salary(值为12000);函数执行结束后,这个局部变量会被销毁,外部打印的依然是最初定义的全局salary(值为8000)。
如果想让函数修改全局的salary,需要在函数内部用global关键字声明要使用全局变量:
salary = 8000 def printSalary(): global salary # 声明此处使用的是全局作用域的salary salary = 12000 print("Salary:", salary) printSalary() print("Salary:", salary)
此时两次输出都会是Salary: 12000。
内容的提问来源于stack exchange,提问作者Dasein
相关产品推荐
相关产品推荐

