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
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
相关文章推荐
- Python中的对象和变量名的问题
- Python在函数中使用全局变量的问题
- python使用变量作为默认参数时所遇到的奇怪问题
- python--多线程编程中的线程间通信的问题--变量同步锁
- Python多线程下的变量问题
- python 变量赋值,引用,初始化问题
- python全局变量被覆盖的问题
- 全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment 分类: divide into python python基础学习 问题总结 2014-01-01 16:35 4595人阅读 评论(0)
- python中关于class类中一个实例变量的引用问题
- MySQLdb错误 编码问题 linux系统粘贴板 python取环境变量 2016.05.27回顾
- Python闭包 变量问题
- Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
- python中的变量域问题
- 浅析Python多线程下的变量问题
- 深入探究Python中变量的拷贝和作用域问题
- Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
- python学习笔记 --- 变量生命周期问题
- react-native npm install 时出现的python环境变量缺失的问题
- go和python变量赋值遇到的一个问题
- 【python】多线程共享全局变量问题