IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

creation liste dans une fonction


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 1
    Par défaut creation liste dans une fonction
    Bonjour à tous,
    Merci d'avance pour toute aide ou explication. Je débute en python(et dans le forum : désolé d'avance si je fais des erreurs) et je me retrouve face à un problème.
    Dans mon code j'aimerais créer une liste qui enregistre les noms de fichiers dans un dossier. L'appel fonctionne bien mais si je l'insère dans une fonction alors rien ne se passe.
    J'ai réduit le code pour vous montrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    from os import listdir
     
    a= listdir('C:/Users/ASUS/Fenetre')
    b= [x.split('/')[-1] for x in a if ".png" in x.split('/')[-1]]
    def test():
       c= [x.split('/')[-1] for x in a if ".png" in x.split('/')[-1]]
     
    test()
    Je retrouve bien dans a les fichiers du dossier, dans b les fichiers images png mais dans c rien alors que c'est la même ligne de code que pour b. Quelqu'un peut il m'expliquer pourquoi dnas ma fonction test le listing ne se fait pas? Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Une fonction est une boite fermée avec 2 ouvertures: les paramètres d'appels et ce qu'elle retourne... et optionnellement ce qu'elle affiche (avec print).

    La votre fabrique un c à partir de a et le jette à la benne (elle n'affiche rien, ne retourne rien...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    2 exemples parmi la myriade de possibilités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os
    [os.path.basename(file) for file in os.listdir('C:/Users/ASUS/Fenetre') if file.endswith('.png')]
    Mieux (ne tient pas compte de la casse):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os, glob
    [os.path.basename(file) for file in glob.glob('C:/Users/ASUS/Fenetre/*.png')]
    Solutions trouvées sur internet.

    Sinon wiztricks explique déjà pourquoi ta fonction ne marche pas...
    Pour t'aider à comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> def hello():
    	c = 'hello'
    >>> def bonjour():
    	print('bonjour')
    >>> def hola():
    	return 'hola'
    >>> c = hello()
    >>> c #Ne retourne rien
    >>> c = bonjour()
    bonjour
    >>> c #Ne retourne rien
    >>> c = hola()
    >>> c
    'hola'
    Après je trouve étonnant de te voir faire de la compréhension de liste et de ne pas maitriser la base des fonctions...

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par maxence059 Voir le message
    L'appel fonctionne bien mais si je l'insère dans une fonction alors rien ne se passe.Quelqu'un peut il m'expliquer pourquoi dnas ma fonction test le listing ne se fait pas?
    Une fonction doit "retourner" une valeur pour que cette valeur soit utilisable par celui qui appelle la fonction. Le retour de valeur se fait par l'instruction return.
    Tu veux retourner une liste de trucs, te suffit de mettre return list(trucs).
    Et bien entendu, du côté appelant, il te faut "récupérer" ce que te retourne la fonction, donc en général dans une variable => v=fonction(). Maintenant "v" contient la liste de trucs retourné par la fonction "fonction".

    C'est une des bases de Python qu'on apprend dans tous les tutoriels qui expliquent le principe des fonctions.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [PowerShell] Gérer plusieurs listes dans une fonction
    Par Brunerboy dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 08/12/2020, 19h11
  2. appel de liste dans une fonction depuis une autre
    Par Matthieu_12 dans le forum Général Python
    Réponses: 9
    Dernier message: 12/11/2020, 12h07
  3. [Python 3.X] [DEB]Modification d'une liste dans une fonction par appel depuis une autre fonction
    Par torquemada dans le forum Général Python
    Réponses: 6
    Dernier message: 27/01/2017, 15h09
  4. Retourner une liste dans une fonction de callback
    Par aguero0221 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 14/03/2016, 16h34
  5. Passage d'une liste dans une fonction
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 19/01/2007, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo