【发布时间】:2013-03-07 04:22:56
【问题描述】:
我正在尝试将整数传递给函数。我认为它可能不起作用,因为我多次调用它?例如,我在一个名为 Alist 的函数中创建了一个二维矩阵,然后将其返回。使用第二个函数,我通过 Alist 并为我想要从 Alist 中返回的值指定一个位置。最后(到目前为止),第三个函数将要求返回值和 Alist。 Alist 打印正常,但返回的值(节点)在应该为 4 时打印 0。我猜它正在使用代码顶部声明的 node = 0 变量,但我不知道为什么。
network.txt 的第一行如下所示: 0,2,4,1,6,0,
Alist = []
node = 0
file = ("F:/media/KINGSTON/Networking/network.txt")
def create_matrix(file):
with open('network.txt') as f:
Alist = []
for line in f:
part = []
for x in line.split(','):
part.append(int(x))
Alist.append(part)
return Alist
def start_node(Alist):
node = Alist[0][2]
print (node)
return node
#test neighbours to see if they can be used
def check_neighbours(node, Alist):
print (Alist)
print (node)
#check for neighbours. if we start at [0][0] we must look for [0][1]
#and [1][0]. Figure out how to add 1 to each cell to navigate across.
#running of code begins here
Alist = create_matrix(file)
start_node(Alist)
check_neighbours(node, Alist)
【问题讨论】:
-
您需要向我们展示调用这些函数的代码。理想的问题是SSCCE——我们可以根据您的输入运行该问题,并查看输出与预期输出有何不同。
-
同时,全局变量、函数参数和局部变量都具有相同的名称是很令人困惑的,这是一个危险信号,您期望我们的代码中有某种魔法' t 看到。例如,在
start_node中设置的node不是全局的。它正在被返回,但除非调用者正在执行类似node = start_node(Alist)之类的操作来设置全局,否则全局不会改变,因此该值仍将为 0。
标签: python variables parameter-passing