为什么function外的print无法出现新值

想要让最后一个print出4.0,def里的gpa已经被重新附值了,为什么最后一个print还是1呢

gpa=1
def grade_gpa(grade,gpa):
if grade>85:
gpa=4.0

grade=int(input(“enter a grade”)
grade_gpa(grade,gpa)
print(str(gpa))

结果:
enter a grade86
1

第一种改法:你写的gpa在函数grade_gpa外部,如果在函数体内部需要修改外部的gpa,需要用golbal修饰

golbal gpa
gpa = 4.0

第二种改法:gpa作为函数grade_gpa的返回值返回出去,然后调用的时候接收一下就行了。

gpa 是全局变量,在局部作用域只能访问,不能重新赋值,如果想要重新赋值,需要添加global声明,否则就是创建一个同名的局部变量

def  func:
    global  gpa

~如果觉得对你有帮助,请点击下采纳,谢谢~