python命名空间的一点疑问?

Python/PHP/Perl 开发与设计
回复
drongh
帖子: 1038
注册时间: 2007-01-10 9:32
送出感谢: 4 次
接收感谢: 5 次

python命名空间的一点疑问?

#1

帖子 drongh » 2015-01-19 13:53

下面这段程序可以正常运行:

代码: 全选

def func():
    print('x的值是', x)
    # x = 2
    print('全局变量x改为', x)


x = 50
func()
print('x的值是', x)
x是全局变量,可以正常运行,但把func()函数中的 x = 2加上后,func函数中的x就变成局部变量了,为什么?
头像
oneleaf
论坛管理员
帖子: 10295
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 109 次

Re: python命名空间的一点疑问?

#2

帖子 oneleaf » 2015-01-19 15:08

如果函数内需要对函数外的变量赋值,需要在函数内指明该变量为全局变量。

代码: 全选

def func():
    print('x的值是', x)
    global x
    x = 2
    print('全局变量x改为', x)
这些用户感谢了作者 oneleaf 于这个帖子:
drongh (2015-01-20 10:19)
评价: 3.7%
drongh
帖子: 1038
注册时间: 2007-01-10 9:32
送出感谢: 4 次
接收感谢: 5 次

Re: python命名空间的一点疑问?

#3

帖子 drongh » 2015-01-20 10:19

oneleaf 写了:如果函数内需要对函数外的变量赋值,需要在函数内指明该变量为全局变量。

代码: 全选

def func():
    print('x的值是', x)
    global x
    x = 2
    print('全局变量x改为', x)
搞懂了.
回复

回到 “Python/Php/Perl”