python - 如何在networkx的函数定义中调用图形?
问题描述
以下是我的代码。我想将函数内部编写的图形称为 ktgraph。我想知道 bdsize 为 6 有多少个节点,但是当我输入 number_of_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)
解决方案
这是一个可变范围问题。变量 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)
推荐阅读
- java - 在多线程计数器Java中实现同步
- c++ - 用迷宫求解程序回溯逻辑错误
- python - 如何通过将源代码保存在 Github 中,将我的 python 程序作为 Web 应用程序在线共享?
- c++ - 如何修复这个未声明的标识符?(C++)
- javascript - ReactTable 上页面大小的自定义下拉菜单
- django - 表单集未在 Django 3 中显示
- node.js - 如何使用 GSuite 帐户通过 node.js 发送邮件?
- java - 在另一个 Java 程序中执行程序
- jquery - jQuery slideToggle 不在实时站点上显示动画,而是在 jsfiddle 上
- matplotlib - 在 matplotlib 中创建条形图