53 votes

Liste de retour de la fonction Python

J'ai une fonction qui analyse un fichier en une liste. J'essaie de retourner cette liste pour pouvoir l'utiliser dans d'autres fonctions.

def splitNet():
    network = []
    for line in open("/home/tom/Dropbox/CN/Python/CW2/network.txt","r").readlines():
        line = line.replace("\r\n", "")
        line = string.split(line, ',')
        line = map(int, line)
        network.append(line)
    return network

Lorsque j'essaie d'imprimer la liste en dehors de la fonction (pour le débogage), j'obtiens cette erreur :

NameError: name 'network' is not defined

Y a-t-il quelque chose de simple que je fais mal ou existe-t-il un meilleur moyen de faire passer des variables entre les fonctions sans utiliser les globaux ?

1voto

Victor Points 11

Vous pouvez déclarer le nom de la variable affectée à la liste comme suit global comme ceci :

def get_list():
    global destination_list
    destination_list = []
    destination_list.extend(('1','2','3'))
    return destination_list

get_list()
print(destination_list)

1voto

L=[1, 2, 3]

def rl(l): 
    return l

[*ll] = rl(L) # ll is in a list

ll
# >>> [1, 2, 3]

*t, = rl(L)   # ll is in a tuple

t
# >>> [1, 2, 3]

0voto

Lord Pantaloon Points 1

Si vous souhaitez renvoyer un élément ou une liste à partir d'une définition, vous pouvez le définir au préalable et l'utiliser comme variable lors de l'écriture initiale de ladite définition. À moins qu'il ne doive être défini à l'intérieur de la définition. Dans ce cas, vous n'aurez pas besoin d'écrire une commande de retour à la fin.

network = []

def splitNet(network):
    for line in open("/home/tom/Dropbox/CN/Python/CW2/network.txt","r").readlines():
        line = line.replace("\r\n", "")
        line = string.split(line, ',')
        line = map(int, line)
        network.append(line)

print network # Will print the list you've appended. But it is now a usable object.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X