HINTING
Apprement, le hinting (ça se dit :O ? ) sert à définir explicitement le type des variables en paramètre ainsi que le type de retour d'une fonction :
Premier exemple tiré de S&M :
def add(a: int, b: int) -> int:
return a + b
Ici, on attend une valeur entière pour les paramètres a et b.
On s'attend aussi à ce que la fonction retourne une valeur entière.
Deuxième exemple tiré de la doc :
def greeting(name: str) -> str:
return 'Hello ' + name
Ici, on remarque que la fonction greeting avec en entrée une str et va renvoyer une str ^^'
SA SER A KWA !?
ça peut aider à l'utilisation au débugage lorsque l'on sait au premier coup d'oeil les valeurs attendues en entrée et en sortie.
Mais aussi :
Quand un surcroit de rigueur sera nécessaire, on pourra rajouter un
filet de sécurité. Et dans quelques temps, peut-être même gagner
sérieusement en perf.
SLICE
Apprement, euh...comment dire...c'est comme du découpage en tranche =D
[EDIT/]
signature de slice :
slice(start, limit, step)
[/EDIT]
j'ai rien compris sur l' utilité des types slice
En fait, ce dont tu parles c'est l'objet slice ! (on ne parle de type ici)
>>> type(slice(2,4))
<class 'slice'>
c'est un peu spécial, mais un exemple vaut mieux qu'un long discours :
>>> items = [0, 1, 2, 3, 4, 5, 6]
>>> a = slice(2, 4)
>>> items[2:4]
[2, 3]
>>> items[a]
[2, 3]
>>> items[a] = [10,11]
>>> items
[0, 1, 10, 11, 4, 5, 6]
>>> del items[a]
>>> items
[0, 1, 4, 5, 6]
ET ALORS?
en fait, on crée un objet slice qu'on peut ensuite utiliser n'importe où et n'importe quand, du moment que celui ci est autorisé.
Comment le dirait Sam :
Donc plutôt que de se trimbaler avec des tuples de valeurs dont il
faudra tester ou imposer la taille. Plutôt que d’attendre en paramètre
uniquement des entiers positionnels ou forcer le passage de None, on
peut aussi tout simplement passer un slice à vos fonctions qui font du
slicing.