In [ ]:
from __future__ import print_function

Modules

Les modules sont les portes d'accès aux bibliothèques de Python. Vous trouverez les références et les détails ici:

Pour utiliser un module, il faut l'importer avec la commande import. Voici un exemple pour importer le module math, qui définit les fonctions mathématiques classiques:


In [1]:
import math

Il est possible d'utiliser les fonctions du module math tout de suite après, par exemple:


In [2]:
import math

x = math.cos(2 * math.pi)

print (x)


1.0

Après l'import, il faut préfixer toutes les méthodes et les objets, ce qui permet de lever des ambiguïtés à la lecture d'un code. Mais comme c'est contraignant, il est possible d'importer tout le module dans le namespace courant :


In [3]:
from math import *

x = cos(2 * pi)

print(x)


1.0

Pour concilier le meilleur des deux mondes, la bonne pratique recommandée est d'importer uniquement les méthodes nécessaires :


In [4]:
from math import cos, pi

x = cos(2 * pi)

print(x)


1.0

Si vous voulez émuler le comportement de Matlab, vous pouvez utiliser la commande import pylab, ce n'est plus maintenu dans les versions courantes de Python mais c'est encore possible de l'utiliser.


In [5]:
import pylab

Obtenir de l'aide en ligne

Pour obtenir de l'aide en ligne avec IPython, vous pouvez taper un ? directement après l'objet, ou taper help(objet)


In [6]:
help(math.log)


Help on built-in function log in module math:

log(...)
    log(x[, base])
    
    Return the logarithm of x to the given base.
    If the base not specified, returns the natural logarithm (base e) of x.


In [7]:
math.exp?

Il est aussi possible de demander de l'aide sur un module, par exemple avec help(math).


In [8]:
help(math)


Help on module math:

NAME
    math

MODULE REFERENCE
    https://docs.python.org/3.5/library/math
    
    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

DESCRIPTION
    This module is always available.  It provides access to the
    mathematical functions defined by the C standard.

FUNCTIONS
    acos(...)
        acos(x)
        
        Return the arc cosine (measured in radians) of x.
    
    acosh(...)
        acosh(x)
        
        Return the inverse hyperbolic cosine of x.
    
    asin(...)
        asin(x)
        
        Return the arc sine (measured in radians) of x.
    
    asinh(...)
        asinh(x)
        
        Return the inverse hyperbolic sine of x.
    
    atan(...)
        atan(x)
        
        Return the arc tangent (measured in radians) of x.
    
    atan2(...)
        atan2(y, x)
        
        Return the arc tangent (measured in radians) of y/x.
        Unlike atan(y/x), the signs of both x and y are considered.
    
    atanh(...)
        atanh(x)
        
        Return the inverse hyperbolic tangent of x.
    
    ceil(...)
        ceil(x)
        
        Return the ceiling of x as an Integral.
        This is the smallest integer >= x.
    
    copysign(...)
        copysign(x, y)
        
        Return a float with the magnitude (absolute value) of x but the sign 
        of y. On platforms that support signed zeros, copysign(1.0, -0.0) 
        returns -1.0.
    
    cos(...)
        cos(x)
        
        Return the cosine of x (measured in radians).
    
    cosh(...)
        cosh(x)
        
        Return the hyperbolic cosine of x.
    
    degrees(...)
        degrees(x)
        
        Convert angle x from radians to degrees.
    
    erf(...)
        erf(x)
        
        Error function at x.
    
    erfc(...)
        erfc(x)
        
        Complementary error function at x.
    
    exp(...)
        exp(x)
        
        Return e raised to the power of x.
    
    expm1(...)
        expm1(x)
        
        Return exp(x)-1.
        This function avoids the loss of precision involved in the direct evaluation of exp(x)-1 for small x.
    
    fabs(...)
        fabs(x)
        
        Return the absolute value of the float x.
    
    factorial(...)
        factorial(x) -> Integral
        
        Find x!. Raise a ValueError if x is negative or non-integral.
    
    floor(...)
        floor(x)
        
        Return the floor of x as an Integral.
        This is the largest integer <= x.
    
    fmod(...)
        fmod(x, y)
        
        Return fmod(x, y), according to platform C.  x % y may differ.
    
    frexp(...)
        frexp(x)
        
        Return the mantissa and exponent of x, as pair (m, e).
        m is a float and e is an int, such that x = m * 2.**e.
        If x is 0, m and e are both 0.  Else 0.5 <= abs(m) < 1.0.
    
    fsum(...)
        fsum(iterable)
        
        Return an accurate floating point sum of values in the iterable.
        Assumes IEEE-754 floating point arithmetic.
    
    gamma(...)
        gamma(x)
        
        Gamma function at x.
    
    gcd(...)
        gcd(x, y) -> int
        greatest common divisor of x and y
    
    hypot(...)
        hypot(x, y)
        
        Return the Euclidean distance, sqrt(x*x + y*y).
    
    isclose(...)
        isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) -> bool
        
        Determine whether two floating point numbers are close in value.
        
           rel_tol
               maximum difference for being considered "close", relative to the
               magnitude of the input values
            abs_tol
               maximum difference for being considered "close", regardless of the
               magnitude of the input values
        
        Return True if a is close in value to b, and False otherwise.
        
        For the values to be considered close, the difference between them
        must be smaller than at least one of the tolerances.
        
        -inf, inf and NaN behave similarly to the IEEE 754 Standard.  That
        is, NaN is not close to anything, even itself.  inf and -inf are
        only close to themselves.
    
    isfinite(...)
        isfinite(x) -> bool
        
        Return True if x is neither an infinity nor a NaN, and False otherwise.
    
    isinf(...)
        isinf(x) -> bool
        
        Return True if x is a positive or negative infinity, and False otherwise.
    
    isnan(...)
        isnan(x) -> bool
        
        Return True if x is a NaN (not a number), and False otherwise.
    
    ldexp(...)
        ldexp(x, i)
        
        Return x * (2**i).
    
    lgamma(...)
        lgamma(x)
        
        Natural logarithm of absolute value of Gamma function at x.
    
    log(...)
        log(x[, base])
        
        Return the logarithm of x to the given base.
        If the base not specified, returns the natural logarithm (base e) of x.
    
    log10(...)
        log10(x)
        
        Return the base 10 logarithm of x.
    
    log1p(...)
        log1p(x)
        
        Return the natural logarithm of 1+x (base e).
        The result is computed in a way which is accurate for x near zero.
    
    log2(...)
        log2(x)
        
        Return the base 2 logarithm of x.
    
    modf(...)
        modf(x)
        
        Return the fractional and integer parts of x.  Both results carry the sign
        of x and are floats.
    
    pow(...)
        pow(x, y)
        
        Return x**y (x to the power of y).
    
    radians(...)
        radians(x)
        
        Convert angle x from degrees to radians.
    
    sin(...)
        sin(x)
        
        Return the sine of x (measured in radians).
    
    sinh(...)
        sinh(x)
        
        Return the hyperbolic sine of x.
    
    sqrt(...)
        sqrt(x)
        
        Return the square root of x.
    
    tan(...)
        tan(x)
        
        Return the tangent of x (measured in radians).
    
    tanh(...)
        tanh(x)
        
        Return the hyperbolic tangent of x.
    
    trunc(...)
        trunc(x:Real) -> Integral
        
        Truncates x to the nearest Integral toward 0. Uses the __trunc__ magic method.

DATA
    e = 2.718281828459045
    inf = inf
    nan = nan
    pi = 3.141592653589793

FILE
    /Users/sylchev/src/extern/python/anaconda/lib/python3.5/lib-dynload/math.cpython-35m-darwin.so


Variables

Typage

Les variables sont dynamiquement typées, pas besoin de préciser si c'est un entier ou un réel.


In [9]:
type(x)


Out[9]:
float

In [10]:
x = 1
type(x)


Out[10]:
int

Les chaînes de caractères

Les chaînes de caractères sont bornées par des ' ' ou des " ". On peut connaître leur longueur avec len( ). On peut voir les méthodes associées en utilisant l'auto-complétion avec la touche tab.


In [13]:
s = u"une chaîne de caractères" # u'chaine' pour indiquer une chaîne en unicode
print ('taille de la chaine :',len(s))
s.replace?
s2 = s.replace('une', 'la')
print (s2)


taille de la chaine : 24
la chaîne de caractères

La chaîne de caractère est un tableau, on accède aux éléments du tableau avec [ ]. Attention, pour les utilisateurs de MATLAB, en Python les tableaux commencent toujours à partir de 0. On peut utiliser la syntaxe complète [début:fin:incrément]


In [14]:
print (u'Le premier caractère est :'+ s[0])


Le premier caractère est :u

In [16]:
print (u'Les 10 premiers caractères sont :'+s[:11])


Les 10 premiers caractères sont :une chaîne 

In [17]:
print (u'Les caractères suivants sont :'+s[11:])


Les caractères suivants sont :de caractères

In [20]:
print (u'Le dernier caractère est :'+s[-1])


Le dernier caractère est :s

In [25]:
print (u'Avec un caractère sur deux :'+s[::2])


Avec un caractère sur deux :uecan ecrcèe

In [29]:
'mac' + 'hin' + 2*'truc'


Out[29]:
'machintructruc'

Les listes

On peut arranger n'importe quel nombre d'éléments dans une liste.


In [30]:
l = ['oeufs', 'brouillés', 100, 1234]

print (type(l))
print ('la liste est :', l)
print ('le premier élément de la liste est:', l[0])
print ('Les 2 premiers éléments de la liste sont', l[0:2])
print ('Le dernier élément de la liste est', l[-1])


<class 'list'>
la liste est : ['oeufs', 'brouillés', 100, 1234]
le premier élément de la liste est: oeufs
Les 2 premiers éléments de la liste sont ['oeufs', 'brouillés']
Le dernier élément de la liste est 1234

Une liste peut être modifiée, concatenée, découpée, etc.


In [31]:
l + ['bacon', 12345]


Out[31]:
['oeufs', 'brouillés', 100, 1234, 'bacon', 12345]

In [32]:
3*l[:2]


Out[32]:
['oeufs', 'brouillés', 'oeufs', 'brouillés', 'oeufs', 'brouillés']

In [33]:
l[2] = l[2] + 23
print(l)


['oeufs', 'brouillés', 123, 1234]

In [34]:
q = [2, 3]
p = [1, q, 4]

print ('La taille de la liste p est', len(p), "et c'est :", p)
print ('Le premier élément de la liste en 2e position est:', p[1][0])


La taille de la liste p est 3 et c'est : [1, [2, 3], 4]
Le premier élément de la liste en 2e position est: 2

In [35]:
l = list() # equivalent à l = [] 
l.append('p')
l.append('o')
l.append('t')

print (l)
l.sort()
print (l)

l.insert(0,'c')
l.insert(1,'o')
print (l)

l.remove('t')
print (l)


['p', 'o', 't']
['o', 'p', 't']
['c', 'o', 'o', 'p', 't']
['c', 'o', 'o', 'p']

Contrôles d'exécution

Test conditionnel


In [43]:
statement1 = False
statement2 = True

if statement1: 
    print("statement1 is True")
elif statement2:
    print("statement2 is True")
else:
    print("statement1 and statement2 are False")
    
if statement1 and statement2:
    print ("statement1 and 2 are True")
    
if statement1 == statement2:
    print ("statement1 and 2 are equal")
    
if statement1 != statement2:
    print ("statement1 and 2 are not equal")


statement2 is True
statement1 and 2 are not equal

Le python utilise l'indentation pour déterminer la portée des contrôles; il n'y a pas d'accolades {} ni de parenthèses ().


In [45]:
statement1 = statement2 = True

if statement1:
    if statement2:
        print("both statement1 and statement2 are True") # attention aux indentations

Boucles

Les boucles for utilisent une syntaxe simple:


In [46]:
for x in [1, 2, 3]:
    print(x)


1
2
3

On a souvent recours à la fonction range([debut,]fin[,incrément]) dans les boucles. Attention, elle commence à zéro et finit avant fin. Par exemple, range(4) va de zéro à 3 mais n'inclut pas 4. La position des arguments de range est inspiré de la déclaration des itérateurs de boucles en C.


In [47]:
range(2, 10, 2)


Out[47]:
range(2, 10, 2)

In [56]:
# for (i=0; i<10; i++) {...loop instructions...}

for x in range(10): # by default range start at 0
    print(x, end=' ')
print()

for x in range(-4,5,2):
    print(x, end=' ')
print()

for word in ["scientific", "computing", "with", "python"]:
    print(word.capitalize(), end=' ')
print()


0 1 2 3 4 5 6 7 8 9 
-4 -2 0 2 4 
Scientific Computing With Python 

La fonction enumerate est parfois utile pour les boucles.


In [58]:
mes_notes = [15, 12, 8, 16, 13]
for i, note in enumerate(mes_notes):
    print ('Note', i+1, ':', note)
    
for i in range(len(mes_notes)):
    print ("Note", i+1, ':', mes_notes[i])


Note 1 : 15
Note 2 : 12
Note 3 : 8
Note 4 : 16
Note 5 : 13
Note 1 : 15
Note 2 : 12
Note 3 : 8
Note 4 : 16
Note 5 : 13

La boucle while ne présente pas de surprises:


In [59]:
i = 0

while i < 5:
    print(i, end=' ')

    i += 1


0 1 2 3 4 

Fonctions


In [60]:
def func0():   
    print("test")

In [61]:
func0()


test

Il vaut mieux prendre les bonnes habitudes tout de suite et documenter les fonctions avec des docstrings, des chaînes de caractères situées juste après la définition de la fonction.


In [66]:
def longueur_de_chaine(s):
    """
    func1, une fonction bien documentée
    
    Affiche une string 's' et indique son nombre de caractères
    """
    
    print(s + " a " + str(len(s)) + " caractères")

In [67]:
help(longueur_de_chaine)
longueur_de_chaine("azertyuiop")


Help on function longueur_de_chaine in module __main__:

longueur_de_chaine(s)
    func1, une fonction bien documentée
    
    Affiche une string 's' et indique son nombre de caractères

azertyuiop a 10 caractères

In [68]:
longueur_de_chaine?

Une fonction peut retourner une ou plusieurs valeurs:


In [69]:
def carre(x):
    """
    Retourne le carré de x.
    """
    return x ** 2

def puissance(x):
    """
    Retourne quelques puissances de x.
    """
    return x ** 2, x ** 3, x ** 4

print ('Le carré de 3 est', carre(3))
x1 = carre(4)
print ("Le carré de 4 est", x1)
x2, x3, x4 = puissance(16)
print('Les premières puissances de 16 sont:', x2, x3, x4)


Le carré de 3 est 9
Le carré de 4 est 16
Les premières puissances de 16 sont: 256 4096 65536

Il est possible de donner des arguments par défaut à une fonction:


In [71]:
def mafonc(x, p=2, debug=False):
    """
    Calcule x à la puissance p. p vaut 2 par défaut.
    
    debug active des affichages intermédiaires pour le debug
    """
    if debug:
        print("evaluation de mafonc pour x = " + str(x) + 
              " en utilisant comme exposant p = " + str(p))
    return x**p

print ('Le résultat est :', mafonc(5, 2))
mafonc(5, debug=True)
mafonc(p=3, debug=False, x=7)


Le résultat est : 25
evaluation de mafonc pour x = 5 en utilisant comme exposant p = 2
Out[71]:
343

Ce notebook est une adaptation de celui de J.R. Johansson (robert@riken.jp) http://dml.riken.jp/~rob/, ainsi que du tutoriel Python de Guido van Rossum & Fred Drake.