Я изо всех сил пытаюсь передать список (holder
, который содержит [0,0]
) другой функции. Я хочу, чтобы check_neighbours
забирал список, а затем делал дальнейшую обработку. Я думаю, что правильно передаю его в main()
, но я не уверен, что должен сделать, чтобы список просто отображал его содержимое при вызове внутри check_neighbours
. Я попробовал =
держатель, но я получил ошибку:Проводящий список python между функциями
global name "holder" is not defined
Я считаю, что я должен положить 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()
Еще раз спасибо, я делаю довольно много предположений о том, как переменная прохождения работает, но я ценю вашу помощь значительно – bigl
@bigl: Вот простое правило: Переменная передача всегда полностью явная.Если у вас есть 'def foo (x, y, z):', и он заканчивается на 'return v, w', вам всегда нужно вызвать его с 3 значениями и сохранить результат в 2, например' a, b = foo (c, d, e) '. (Это эмпирическое правило модифицируется в более сложных случаях, например, классы с методами, глобальные переменные и т. Д., Но пока игнорируйте их.) – abarnert
благодарю вас за это, очень полезную информацию. теперь все отлично работает. – bigl