如何在函数中创建其他函数可以在python中访问的变量?
如何使一个函数可以访问另一个变量如何在函数中创建其他函数可以在python中访问的变量?,python,variables,python-2.7,function,Python,Variables,Python 2.7,Function,如何使一个函数可以访问另一个变量 >>> def foo(): ... pop = 1 ... print pop ... >>> def oof(): ... pop-=1 ... print pop ... >>> foo() 1 >>> oof() Traceback (most recent call last): File "<stdin>", line 1, in <
>>> def foo():
... pop = 1
... print pop
...
>>> def oof():
... pop-=1
... print pop
...
>>> foo()
1
>>> oof()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in oof
UnboundLocalError: local variable 'pop' referenced before assignment
>>def foo():
... pop=1
... 印刷流行音乐
...
>>>def oof():
... pop-=1
... 印刷流行音乐
...
>>>foo()
1.
>>>oof()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第2行,在oof中
UnboundLocalError:赋值前引用了局部变量“pop”
这似乎引发了一个
UnboundLocalError
,即使我已将pop
分配给1
。这是为什么?您可以使用global
将变量设置为全局变量:
>>> def foo():
... global pop
... pop = 1
... print pop
...
>>> def oof():
... global pop
... pop-=1
... print pop
...
>>> foo()
1
>>> oof()
0
>>> oof()
-1
>>>
或者,您可以接收输入并返回输出,例如:
>>> def foo():
... pop = 1
... return pop
...
>>> pop = foo()
>>> def oof(pop):
... pop -=1
... return pop
...
>>> print pop
1
>>> pop = oof(pop)
>>> print pop
0
您可以使用
global
将变量设置为全局变量:
>>> def foo():
... global pop
... pop = 1
... print pop
...
>>> def oof():
... global pop
... pop-=1
... print pop
...
>>> foo()
1
>>> oof()
0
>>> oof()
-1
>>>
或者,您可以接收输入并返回输出,例如:
>>> def foo():
... pop = 1
... return pop
...
>>> pop = foo()
>>> def oof(pop):
... pop -=1
... return pop
...
>>> print pop
1
>>> pop = oof(pop)
>>> print pop
0
这听起来像是一个案例
这听起来像是一个案例
这是一种非常非常糟糕的编程方法。如果你想要保持共享状态的函数,你可能想把它构建成一个对象,这是一个非常非常糟糕的编程方法。如果您想要保持共享状态的函数,您可能希望将其构建到对象中。另一种选择是将状态封装到对象中。全局函数通常非常不受欢迎。为什么不受欢迎?值得注意的是,
oof
仍然不会修改全局pop
,因为大型程序变得笨拙,而且更难看到程序的流程。另一种选择是将状态封装到对象中。全局对象通常非常不受欢迎。为什么不受欢迎?值得注意的是,oof
仍然不会修改全局pop
,因为大型程序变得笨拙,更难看到程序的流程。