无法访问函数内部定义的全局变量

问题描述 投票:0回答:2

我有一个程序(如下),我在其中定义了一个名为

function
的函数。

我知道如果你想在函数外部访问它们,你可以通过将它们定义为全局变量来访问函数内部定义的变量。

代码

所以,我在函数内部定义了一个全局变量。 然后我尝试访问它。

def function(x):
    
    global num_of_clust, clust_index
    clust_index = np.array([1,2,4])
    num_of_clust = len(clust_index)
    
    return x**2

if num_of_clust >= 1:
    
    print(2)

问题

但是,就我而言,这似乎不起作用。

我不断收到一条错误,指出

num_of_clust
未定义,它显然位于函数内部并被定义为全局变量。

NameError                                 Traceback (most recent call last)
<ipython-input-5-f629dd1943ba> in <module>
      7     return x**2
      8 
----> 9 if num_of_clust >= 1:
     10 
     11     print(2)

NameError: name 'num_of_clust' is not defined

我有另一个程序也有同样的问题,但它更复杂,所以我编写了这个测试代码来解决这个问题。

问题

有人对为什么会出现这种情况有任何见解或建议吗?

python function global-variables nameerror
2个回答
1
投票

在您的情况下, num_of_clust 是在从未被调用的函数内定义的。因此,您必须首先调用它或在函数外部定义 num_of_clust。


0
投票

在此代码中,您可以在检查 if 条件之前调用函数,然后它将起作用,或者您可以在函数外部定义变量。

© www.soinside.com 2019 - 2024. All rights reserved.