Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在函数中创建其他函数可以在python中访问的变量?_Python_Variables_Python 2.7_Function - Fatal编程技术网

如何在函数中创建其他函数可以在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
,因为大型程序变得笨拙,更难看到程序的流程。