如何更改函数中变量的范围? 蟒蛇
这个问题在这里已经有了答案:
将它们视为功能的一部分。 当函数结束时,它的所有变量也会死掉。
x=2
y=3
def func(x,y):
x=200
y=300
func(x,y) #inside this function, x=200 and y=300
#but by this line the function is over and those new values are discarded
print(x,y) #so this is looking at the outer scope again
如果你想让一个函数按照你写的方式修改一个值,你可以使用global
但这是非常糟糕的做法。
def func(x,y):
global x #these tell the function to look at the outer scope
global y #and use those references to x and y, not the inner scope
x=200
y=300
func(x,y)
print(x,y) #prints 200 300
这样做的问题在于,它使得在最好的情况下调试恶梦,而在最坏的情况下完全不可理解。 像这些东西通常被称为函数中的“副作用” - 设置一个你不需要设置的值,而不显式地返回它是一件坏事。 一般来说,你应该编写的就地修改项的唯一函数是对象方法(比如[].append()
修改列表,因为它返回一个新列表是愚蠢的!)
做这种事情的正确方法是使用返回值。 尝试类似
def func(x,y):
x = x+200 #this can be written x += 200
y = y+300 #as above: y += 300
return (x,y) #returns a tuple (x,y)
x = 2
y = 3
func(x,y) # returns (202, 303)
print(x,y) #prints 2 3
为什么没有工作? 那么因为你从来没有告诉程序用这个元组(202, 303)
任何事情,只是为了计算它。 我们现在分配它
#func as defined above
x=2 ; y=3
x,y = func(x,y) #this unpacks the tuple (202,303) into two values and x and y
print(x,y) #prints 202 303
链接地址: http://www.djcxy.com/p/20837.html
上一篇: How to change the scope of a variable in a function? Python
下一篇: How does python assign values after assignment operator