欢迎来到赛兔子家园

Python如何在函数中使用同名的全局变量

全局变量可以在程序中任何位置被访问甚至修改,但是,当函数中定义了和全局变量同名的局部变量时,那么在当前函数中,无论是访问还是修改该同名变量,操作的都是局部变量,而不再是全局变量。

当函数内部的局部变量和函数外部的全局变量同名时,在函数内部,局部变量会“覆盖”同名的全局变量。

举个实例:

1 name = "Python教程"
2 def demo ():
3     #访问全局变量
4     print(name)
5 demo()

程序输出结果:

Python教程

上面程序中,第 4 行直接访问 name 变量,这是允许的。在上面程序的基础上,在函数内部添加一行代码,如下所示:

name = "Python教程"
def demo ():
    #访问全局变量
    print(name)
    name="django教程"
demo()

程序输出结果:

UnboundLocalError: local variable 'name' referenced before assignment

Python 语法规定,在函数内部对不存在的变量赋值时,默认就是重新定义新的局部变量。上面程序中,第 5 行就定义了一个新的 name 局部变量,由于该局部变量名和全局变量名 name 同名,局部 name 变量就会“覆盖”全局 name 变量,再加上局部变量 name 在 print(name) 后才被初始化,违反了“先定义后使用”的原则,因此程序会报错。

解决方案:

在函数中声明全局变量。为了避免在函数中对全局变量赋值(不是重新定义局部变量),可使用 global 语句来声明全局变量。因此,可将程序改为如下形式:

name = "Python教程"
def demo ():
    #访问全局变量
    global name
    print(name)
    name="django教程"
    print(name)
demo()

程序输出结果:

Python教程
django教程

 

posted on 2024-03-22 10:34  赛兔子  阅读(14)  评论(0编辑  收藏  举报

导航