我正在努力将列表(holder
,其中包含[0,0]
)传递给另一个函数。我希望check_neighbours
选择列表,然后进行进一步处理。我想我在main()
中正确传递了它但我不确定如何让列表在check_neighbours
内部调用时简单地显示其内容。我试过=
持有人,但收到了错误:
全局名称“持有人”未定义
我相信我必须把holder = #something
放在这里,但我无法弄清楚是什么。
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):
i=0
j=0
#point node to pos [0][0] of Alist
node = Alist[i][j]
#create a list to hold co-ordinates
holder = []
holder.append(i)
holder.append(j)
print holder
return node, holder
#test neighbours to see if they can be used
def check_neighbours(node, Alist):
holder = #something
#code begins here
def main():
file = ("F:/media/KINGSTON/Networking/network.txt")
Alist = create_matrix(file)
node = start_node(Alist)
holder = check_neighbours(node, Alist)
main()
答案 0 :(得分:4)
在start_node
结束时,您执行此操作:
return node, holder
...但是当你打电话时,你会这样做:
node = start_node(Alist)
这意味着您的本地node
变量最终会成为node, holder
的元组。你不想要那个。你想要这个:
node, holder = start_node(Alist)
与此同时,你说"我想我在main()函数"中正确传递了它,但你不在{{ 1}}功能:
main
holder = check_neighbours(node, Alist)
无法在此check_neighbours
获取holder
,因为您未在此处holder
提供check_neighbours
。
另外,当您定义def check_neighbours(node, Alist):
holder = #something
时,您执行了此操作:
holder
这不会采用holder
参数,它定义了一个名为def check_neighbours(node, Alist, holder):
的新局部变量。因此,将这两行更改为:
holder = check_neighbours(node, Alist, holder)
并将其命名为:
check_neighbors
另外,请注意,您将holder
的结果分配回my_name = my_name.replace('Joseph', 'Joe')
变量,替换了您传入的内容。通常,这是完全合理的事情(想想check_neighbors
),但要确保它确实是你想要的(当然,确保return holder
以def main():
file = ("F:/media/KINGSTON/Networking/network.txt")
my_list = create_matrix(file)
my_node, my_holder = start_node(my_list)
my_new_holder = check_neighbours(my_node, my_list, my_holder)
结束,或者返回一些其他适当的值)。< / p>
最后,正如我在你的另一个问题中所说:如果你继续使用相同的名称作为参数和传入的值,你就会像这样一直让自己感到困惑。如果您使用了不同的名称,那么您可以更轻松地查看自己缺失的内容。甚至像每个人的前缀一样简单:
{{1}}