Les expressions et fonctions internes.

Mis à part les types, les instructions de sélection et d'itération, Python comprend aussi plusieurs expressions et instructions permettant d'effectuer les opérations les plus courantes en un appel de méthode.
 

Il en existe beaucoup, et parfois elles sont très spécifiques. Nous allons en voir quelques unes afin de voir les possibilités de Python, et de mieux comprendre ce que nous avons déjà utilisé.
 

L'expression print.
 

Print est l'expression la plus courante, elle permet d'afficher à l'écran les informations qui la suivent.
 

print "Hello World" # Affichage d'une chaîne

print "Hello %s" % "world" # Affichage avec un argument

print len(liste) # Affichage du résultat d'une méthode
 

L'expression print suis la règle de formatage des chaînes. (voir chapitre 2)
 

L'expression input.
 

Input est une expression qui permet de poser une question à l'utilisateur, et d'en affecter la réponse à une variable.

Input ne supporte que les entiers et attend une entrée avant de continuer.
 

>>> var = input("un entier ? : ")

un entier ? : 4

>>> print var

4
 

L'expression raw_input.
 

Raw_input fonctionne comme input mais permet d'affecter n'importe quel type d'objet à la variable.
 

>>> var = raw_input("Yes/No ? : ")

Yes/No ? : Yes

>>> print var

Yes
 

La fonction dir(x).
 

La fonction dir permet d'énumérer les objets d'un module, les modules déjà chargés, les méthodes d'une classe, etc.
 

>>> dir()

['__builtins__', '__doc__', '__name__', 'var']

>>> import sys

>>> dir()

['__builtins__', '__doc__', '__name__', 'sys', 'var']

>>> dir(sys)

['__doc__', '__name__', '__stderr__', '__stdin__', '__stdout__', 'argv', 'builtin_module_names', 'copyright', 'exc_info', 'exc_type', 'exec_prefix', 'executable', 'exit', 'getrefcount', 'hexversion', 'maxint', 'modules', 'path', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setprofile', 'settrace', 'stderr', 'stdin', 'stdout', 'version']
 
 

La fonction type(objet).
 

Type retourne le type de l'objet envoyé en argument.
 

>>> type(10)

<type 'int'>

>>> type("hello")

<type 'string'>
 

La fonction abs(nombre).
 

Abs retourne la valeur absolue du nombre envoyé en argument.
 

>>> abs(-8)

8
 
 

La fonction cmp(x, y).
 

Cmp compare deux arguments et retourne une valeur négative si le premier est plus petit que le deuxième, zéro s'ils sont égaux, et une valeur positive si le premier est plus grand.
 

>>> cmp(2,3)

-1

>>> cmp(2,2)

0

>>> cmp(3,2)

1
 
 

Les fonction max(s), min(s).
 

Ces deux fonction permettent de sortir l'objet de plus grande et plus petite valeur d'une séquence contenant au minimum un objet.
 

La fonction apply(fonc, arg, ...).
 

Certains programmes ont besoin d'appeler des fonctions arbitrairement et ce, de manière générique, sans connaître leur nom ou argument. La forme "apply" appelle simplement la fonction passée en paramètre avec la liste d'arguments. La véritable utilité de "apply" est de pouvoir rendre l'appel de fonction différente à un même point du programme !
 
 

>>>if <test>:

>>> action, argum = f_1, (1,)

>>>else:

>>> action, argum = f_2, (2,3,4)

>>>

>>>apply(action, argum)
 

Dans cet exemple la fonction appelée change en fonction du test if !
 
 

La fonction map(fonc, liste,...).
 

Les programmes appliquent souvent une opération à chaque élément d'une liste. Python fournit une fonction interne qui effectue la plus grande partie du travail.

La fonction "map" applique une fonction passée en argument à chaque élément d'un objet séquence et retourne une liste contenant tous les résultats des appels.
 

>>> cp = [1,2,3,4]

>>> cp = map((lambda x, x+10), cp)

>>> cp

>>> [11,12,13,14]
 
 

La fonction reduce(fonc, liste, ...).
 

La fonction "reduce" nécessite au minimum deux arguments car elle travaille de façon à avoir un résultat découlant d'un objet séquence.

La fonction reduce exécute la fonction une première fois avec les deux premiers arguments (d'une liste par exemple), ensuite elle prend le résultat comme premier argument et son deuxième argument sera l'élément suivant de la liste.

Il est possible de donner un paramètre de départ à la fonction reduce. Ce qui permettra de donner la valeur de départ pour une addition successive, par exemple.
 

>>> c = (0,1,2,3,4)

>>> y = reduce(lambda x,y:x+y, c)

>>> y

10
 
 

La fonction filter(fonc, liste, ...).
 

"filter" permet de ressortir d'une liste, ou autre objet séquence, toutes les valeurs qui sont différentes de 0 après le passage dans une fonction. Il est donc, par exemple, possible de sortir les nombres impairs avec un modulo 2.
 

>>> c = [0,1,2,3,4]

>>> y = filter(lambda x: x%2, c)

>>> y

[1,3]
 
 

La fonction eval(expression, ...).
 

"eval" permet d'exécuter une chaîne comme si'l s'agissait d'une expression. On peut évaluer une expression littérale, une simple expression mathématique, et même une expression "builtin".
 

>>> eval("'x'*4")

'xxxx'

>>> eval("len('world')")

5
 
 

La fonction exec(instruction, ...).
 
 

"exec" ressemble à "eval", mais au lieu de prendre une chaîne comme une expression, exec l'exécute comme si'l s'agissait d'une instruction en python ! Ceci peut par exemple servir à faire des "import" dans une itération.
 

>>> s = ['sys', 'os', 'string', 'Tkinter']

>>> for i in s:

>>> exec 'import'+' '+i

>>>

>>> dir()

['Tkinter', '__builtins__', '__doc__', '__name__', 'i', 'os', 's', 'string', 'sys']
 
 

La fonction execfile(file, ...).
 

Execfile permet d'exécuter un programme contenu dans un fichier. C'est en un appel extérieur.
 

>>> execfile("hello.py")

"Hello World"
 

# fichier hello.py :
 

print "Hello World"