您的位置:首页 > 编程语言 > Python开发

python 变量问题

2013-02-20 19:17 225 查看
a = 0

def func():

    print a

在函数中定义的变量,不能与全局的变量同名,当函数中存在相同变量名时,默认为局部变量。

a = 0

def func():

    print a

    a = 2

在函数中的局部变量未定义先使用,所有会报错。

想要调用变量而不报错,需引入全局变量,

a = 0

def func():

    global a

    print a

    a = 2

全局变量应该谨慎使用,避免造成不必要的烦恼。

下边是一个特例:

>>> class A():

...     x=1

...     gen=(x for _ in xrange(10))

...     

... 

>>> A.gen

<generator object <genexpr> at 0x22bfbe0>

>>> print list(A.gen)

Traceback (most recent call last):

  File "<input>", line 1, in <module>

    print list(A.gen)

  File "<input>", line 3, in <genexpr>

    gen=(x for _ in xrange(10))

NameError: global name 'x' is not defined

>>> x = 1

>>> print list((x for _ in xrange(10)))

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

>>> class A():

...     gen = (x for _ in xrange(10))

...     

... 

>>> print list(A.gen)

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

>>> class A():

...     x = 1

...     gen = (lambda x:(x for _ in xrange(10)))(x)

...     

... 

>>> print list(A.gen)

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

与其余作用域空间相互隔离

来自:https://buluo.qq.com/p/detail.html?bid=21580&pid=4005775-1483516970&from=share_qq
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django后台汉字