Skip to main content
 首页 » 编程设计

python之为什么只有一些函数可以使用在函数外声明的变量

2025年05月04日13daizhj

我有这个代码:

def r(): 
    i += 1 
    return i 
 
def f(): 
    return x*a 
 
i = 0 
 
a=2  
x=3 
 
print f() 
print r() 

我在 r() 中遇到了这个错误,但在 f() 中却没有:

~$ python ~/dev/python/inf1100/test.py  
6 
Traceback (most recent call last): 
  File "/home/marius/dev/python/inf1100/test.py", line 18, in <module> 
    print r() 
  File "/home/marius/dev/python/inf1100/test.py", line 2, in r 
    i += 1 
UnboundLocalError: local variable 'i' referenced before assignment 

为什么 f() 可以使用函数外定义的变量,而 r() 不能?

请您参考如下方法:

那是因为r重新分配了全局变量i。 f 另一方面只是使用它。请记住,i += 1 与 i = i + 1 相同。

除非您明确说明,否则 Python 会将函数中使用的所有变量视为局部变量。此外,由于在 r 的本地范围内没有定义变量 i,因此会引发错误。

如果你想在一个函数中重新分配一个全局变量,你必须输入:

global var 

在函数顶部显式声明 var 是全局的。

因此,要使 r 正常工作,应将其重写为:

def r(): 
    global i 
    i += 1 
    return i