Directory
logging
inspect et introspection
import inspect
Permet de retourner sous forme de string des infos d’introspection. Par exemple pour tracer les appels d’une fonction:
import inspect
def cochon():
    print(inspect.stack()[0][3]) # cochon
    print(inspect.stack()[1][3]) # poule
    print(inspect.stack()[2][3]) # vache
    print(inspect.stack()[3][3]) # <module>
def poule():
    cochon()
def vache():
    poule()
vache()
output:
cochon
poule
vache
<module>
La première valeur entre [] définit le niveau d’introspection. 0 est la fonction actuelle, 1, celle qui apelle,… La seconde valeur entre [], le type d’information.
- [0][0]$ \Rightarrow $ path du fichier
- [x][1]$ \Rightarrow $ adresse en mémoire du l’objet
- [x][2]$ \Rightarrow $ numéro de la ligne du call
- [x][3]$ \Rightarrow $ nom de la fonction
- [x][4]$ \Rightarrow $ string contenant le text de la ligne
** Le module comporte plein d’autres fonctions interessantes !**
Nous pouvons retourner le nom de la classe courante avec self.__class__.__name__.
Dans le cadre d’un héritage, cela retourne le nom de la classe qui hérite:
import inspect
class Parent(object):
    def __init__(self, a=0):
        self.a = a
    
    def debug(self):
        print(inspect.stack()[1][3])
        print(self.__class__.__name__)
class Enfant(Parent):
    
    def poule(self):
        self.debug()
e1 = Enfant()
e1.poule()
output:
poule
Enfant
Random
randint
random.randint(a, b)
Sort entier au hasard entre a et b
>>> import random
>>> print(random.randint(1, 5))
4
Si nous avons uniquement besoin d’une plus valeur:
>>> print(random.randint(1, 5)*100)
200
Plus large spectre:
>>> for i in range(10):
...     print(random.randint(1,10000), end=', ')
4937, 248, 65, 5924, 7392, 2950, 4, 1577, 8702, 7708
choice
Sort un élément d’une séquence:
>>> print(random.choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
G
Equivalent du popitem() des dictionnaire:
>>> l = ['a', 'b', 'c', 'd']
>>> r = random.choice(l)
>>> l.remove(b)
>>> print(l, b)
['a', 'b', 'd'] c
shuffle
>>> l = [i for i in range(10)]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(l)
>>> print(l)
[4, 1, 7, 5, 6, 0, 8, 3, 9, 2]
randrange
randrange(start, stop=None, step=1, _int=int)
Sort un element au hasard dans range(start, stop[, step])
** A la différence de randint() nous pouvons ici définir une borne de départ uniquement.**