如何在networkx的函数定义中调用图形?

2024-10-02 04:30:53 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的代码。我想把写在函数中的图调用为ktgraph。我想知道一个bdsize为6的节点有多少个,但是当我键入number \u of \u nodes(ktgraph)时,它是不可调用的。我该怎么做

def MyBoard(bdSize):
    ktGraph = nx.Graph()
    ktGraph.add_node(bdSize) 
    for row in range(bdSize):
       for col in range(bdSize):
           nodeId = (row*bdSize) + col
           newPositions = MoveTo(row,col,bdSize)
           for e in newPositions:
               nid = e[0]*bdSize+ e[1]
               ktGraph.add_edge(nodeId,nid)
               no = ktGraph.number_of_nodes()
    return nx.draw(ktGraph, with_labels = True)

Tags: ofinaddnumberforrangecolrow
1条回答
网友
1楼 · 发布于 2024-10-02 04:30:53

这是一个可变范围的问题。 变量ktGraph有一个局部作用域,只能从函数内部访问。可以从函数内部打印所需的值,返回变量并捕获它,也可以将局部变量赋给函数外部的全局变量并自由使用它

示例:

global_var_outside_func
def MyBoard(bdSize):
    ktGraph = nx.Graph()
    ktGraph.add_node(bdSize) 
    for row in range(bdSize):
       for col in range(bdSize):
           nodeId = (row*bdSize) + col
           newPositions = MoveTo(row,col,bdSize)
           for e in newPositions:
               nid = e[0]*bdSize+ e[1]
               ktGraph.add_edge(nodeId,nid)
               no = ktGraph.number_of_nodes()

    #referencing a global variable using global keyword
    global global_var_outside_func

    #assign the desired variable to it for inspection
    global_var_outside_func = ktGraph

    return nx.draw(ktGraph, with_labels = True)

相关问题 更多 >

    热门问题