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 :

Différence entre un script tapé en ligne de commande et le même programme exécuté depuis un script


Sujet :

Python

  1. #1
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    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 827
    Billets dans le blog
    1
    Par défaut Différence entre un script tapé en ligne de commande et le même programme exécuté depuis un script
    Bonjour à tous

    Je viens de découvrir un truc un peu bizarre: quand j'exécute un script Python il fonctionne mais quand je le tape en "ligne de commande" il ne fonctionne pas

    Voici le script
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    def intervalle(x, y):
    	while x <= y:
    		yield x
    		x+=1
     
    generateur=intervalle(5, 15)
    for i in generateur:
    	if i == 10:
    		generateur.send(12)
    	print i

    Quand j'exécute ce script en demandant python nom_du_script.py tout va bien. Il m'affiche 5 6 7 8 9 10 12 13 14 15. Mais quand je le tape en direct en ligne de commande (ou bien dans l'idle), il m'affiche 5 6 7 8 9 11 10 12 14 15 (copie d'écran jointe)
    Nom : generateur.jpg
Affichages : 504
Taille : 64,7 Ko

    Si quelqu'un a une idée...
    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]

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour

    Je viens d'essayer avec différentes version de python 2.5, 2.7, 3.3 sous Windows comme sous Linux.
    et j'ai le même phénomène Et, bien entendu, aucune idée d'où cela peut venir.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    Le problème disparaît lorsqu'on écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in generateur:
    	if i == 10:
    		z = generateur.send(12)
    	print i
    i.e. on pousse le retour quelque part...
    Il disparaît aussi si on enrobe ces instructions dans une fonction (ou un module).

    Ça vient du contexte limite qu'offre la console a une "coroutine" (g.send) en direct (plutôt que depuis une fonction).

    Comme c'est facile a reproduire, le plus simple est de le remonter aux mainteneurs (bugs.python.org) pour voir ce qu'ils en pensent.

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

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Yop !

    C'est pas un bug.
    L'explication est ici : http://docs.python.org/2/reference/e...generator.send

    Dans une console interactive, le retour d'une fonction non affecté est affiché, donc le résultat est normal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>> def print5():
    ...     return 5
    ... 
    >>> print5()
    5

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    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 827
    Billets dans le blog
    1
    Par défaut
    Excellent - un grand merci pour cette info
    Merci à tous de vous être penchés sur ce problème.
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/06/2012, 10h41
  2. Lancement script Sql en ligne de commande
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/11/2006, 10h27
  3. Lancer un script ASP en ligne de commande
    Par Matth_S dans le forum ASP
    Réponses: 4
    Dernier message: 11/08/2006, 10h46
  4. [Directives] Execution script php en ligne de commande
    Par pingoo78 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/02/2006, 12h06
  5. lancer un script asp en ligne de commande
    Par niel5 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 26/08/2005, 11h32

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