python 2.7 变量作用域的疑问

发布网友

我来回答

2个回答

热心网友

在函数中定义和修改全局变量,需要使用global关键字。但访问全局变量(不修改它的值),可以省略global关键字。python这样设计的意义在于,防止python程序员不小心修改了全局变量。使用global关键字后,程序员很清楚自己正在做什么。


在例三中,b()函数并没有修改全局变量u。u是一个对象的引用,有唯一的对象ID。在修改了变量的引用,导致变量ID改变是,才算是“修改了对象”。例如:

u = {}
def foo():
    global u
    u = 1
    return u
print foo()

这是全局变量u被修改,因为它由一个字典变成了一个int对象,它的值发生了变化。


望采纳,谢谢支持!

热心网友

首先:关键字global声明一个变量属于全局命名空间,一般在需要修改全局变量时使用,比如:

a=1
def f():
    global a
    a+=1

问题1:例子2在函数b内部操作全局变量,需要添加global语句,声明u是全局变量

问题2:可能是闭包,不太确定

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com