如果我这样写:
c = []
def cf(n):
c = range (5)
print c
if any((i>3) for i in c) is True:
print 'hello'
cf(1)
print c
然后我得到:
[1, 2, 3, 4]
hello
[]
我对编程真的很陌生,所以请简单地解释一下,但是我如何阻止Python忘记什么c
是在函数结束之后吗?我以为我可以通过定义来修复它c
在函数之前,但显然c
与仅为函数循环创建的不同。
在我的例子中,我显然可以这样写:
c = range (5)
def cf(n)
但我试图编写的程序更像是这样的:
b = [blah]
c = []
def cf(n):
c = [transformation of b]
if (blah) is True:
'loop' cf
else:
cf(1)
g = [transformation of c that produces errors if c is empty or if c = b]
所以我无法定义c
函数之外。
在Python中,你可以读取函数中的全局变量,但默认情况下你不能分配给它们。原因是每当 python 发现c =
它将创建一个局部变量。因此,要分配给全局变量,您需要明确指定要分配给全局变量。
所以这会起作用,例如:
c = [1,2,3]
def cf():
print(c) # it prints [1,2,3], it reads global c
然而,这并不像您所期望的那样:
c = [1,2,3]
def cf():
c = 1 # c is local here.
print(c) # it prints 1
cf()
print(c) # it prints [1,2,3], as its value not changed inside cf()
因此,要使 c 相同,您需要:
c = [1,2,3]
def cf():
global c
c = 1 # c is global here. it overwrites [1,2,3]
print(c) # prints 1
cf()
print(c) # prints 1. c value was changed inside cf()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)