Outils personnels
Vous êtes ici : Accueil Python Bonnes pratiques et astuces Python Ligne de commande

Ligne de commande

Par David Goodger - Dernière modification 17/05/2008 11:23
Contributeurs : David Larlet
CC BY-SA

Le "_" interactif

C'est une fonctionnalité très utile que peu de développeurs connaissent. (Note du traducteur : bien entendu vous n'en faites pas partie et vous connaissez les dangers associés.)

Dans un interpréteur interactif, que vous évaluiez une expression ou que vous appeliez une fonction, le résultat est stocké dans une variable temporaire, _ (un underscore) :

>>> 1 + 1
2
>>> _
2

_ stocke la dernière valeur affichée.

Lorsqu'un résultat vaut None, rien n'est affiché, donc _ ne change pas. C'est normal !

Ça ne marche que dans un interpréteur interactif, pas dans un module.

C'est particulièrement utile lorsque vous travaillez sur un problème de manière interactive, et que vous souhaitez stocker la valeur du dernier résultat :

>>> import math
>>> math.pi / 3
1.0471975511965976
>>> angle = _
>>> math.cos(angle)
0.50000000000000011
>>> _
0.50000000000000011

Utilisation de la ligne de commande

Exemple (Note du traducteur : j'ai déjà parlé de ça aussi) :

#!/usr/bin/env python

"""
Module docstring.
"""

import sys
import optparse

def process_command_line(argv):
    """
    Return a 2-tuple: (settings object, args list).
    `argv` is a list of arguments, or `None` for ``sys.argv[1:]``.
    """
    if argv is None:
        argv = sys.argv[1:]

    # initialize the parser object:
    parser = optparse.OptionParser(
        formatter=optparse.TitledHelpFormatter(width=78),
        add_help_option=None)

    # define options here:
    parser.add_option(      # customized description; put --help last
        '-h', '--help', action='help',
        help='Show this help message and exit.')

    settings, args = parser.parse_args(argv)

    # check number of arguments, verify values, etc.:
    if args:
        parser.error('program takes no command-line arguments; '
                     '"%s" ignored.' % (args,))

    # further process settings & args if necessary

    return settings, args

def main(argv=None):
    settings, args = process_command_line(argv)
    # application code here, like:
    # run(settings, args)
    return 0        # success

if __name__ == '__main__':
    status = main()
    sys.exit(status)
Actions sur le document