Skip to main content
 首页 » 编程设计

Python 抛出奇怪的 NameError : name function_name> is not defined

2025年05月04日14落叶无声

import networkx as nx #@UnresolvedImport 
from networkx.algorithms import bipartite #@UnresolvedImport 
from operator import itemgetter 
from random import choice 
 
corpus = open('/home/abehl/Desktop/Corpus/songs.wx', 'r') 
 
ALPHA = 1.5 
EPSILON = 0.5 
 
song_nodes = [] 
word_nodes = []     
 
edges = zip(song_nodes, word_nodes) 
 
B = nx.Graph(edges) 
degX,degY = bipartite.degrees(B, word_nodes) 
 
sortedSongNodesByDegree = sorted(degX.iteritems(), key=itemgetter(1)) 
print sortedSongNodesByDegree 
 
song_nodes2 = [] 
word_nodes2 = [] 
Vc = list(set(word_nodes)) 
 
edges2 = zip(song_nodes2, word_nodes2) 
C= nx.Graph(edges2) 
 
for songDegreeTuple in sortedSongNodesByDegree: 
    for i in range(songDegreeTuple[1]): 
        connectedNodes = C.neighbors(songDegreeTuple[0]) 
        VcDash = [element for element in Vc if element not in connectedNodes] 
        calculateBestNode(VcDash) 
 
def calculateBestNode(VcDashsR): 
    nodeToProbailityDict = {} 
    for node in VcDashsR: 
        degreeOfNode = bipartite(C, [node])[1][node] 
        probabiltyForNode = (degreeOfNode ** ALPHA) + EPSILON 
        nodeToProbailityDict[node] = probabiltyForNode 

在上面的 python 程序中,即使在程序中定义了函数“calculateBestNode”,python 解释器也会抛出以下错误。我在这里错过了什么吗?

NameError: name 'calculateBestNode' is not defined

请原谅我在这里发布了一个大型程序。

请您参考如下方法:

一个Python程序是自上而下执行的,所以在使用之前需要先定义函数。一个常见的替代方法是将所有自动执行的代码放在 main 函数中,并在文件底部添加:

if __name__ == '__main__': 
    main() 

这还有一个额外的好处,即您现在已经编写了一个可以被其他人导入的模块。