Comments on: L’opérateur splat (l’étoile: *) en Python http://sametmax.com/operateur-splat-ou-etoile-en-python/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Sam http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-196145 Thu, 28 Jun 2018 17:42:38 +0000 http://sametmax.com/?p=173#comment-196145 Donne toi le temps

]]>
By: NicK http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-195897 Wed, 20 Jun 2018 14:59:27 +0000 http://sametmax.com/?p=173#comment-195897 Compris …

Par contre pour appliquer c’est une autre chose.

]]>
By: Antoine http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-189802 Wed, 27 Sep 2017 10:04:38 +0000 http://sametmax.com/?p=173#comment-189802 Autre usage de **kwargs: altération de paramètres par défaut (Python 3.5.2).

def draw(a, dx = 3, dy = 6, rayon = 1,

…nfc = yellow, nec = default, nlc = black, nlfs = 12,

…ffc = white, fec = default, flc = black, flfs = 12,

…lc = black,

…fun = lambda a: str(a.label),

…title = ”, titlec = black, titlefs = 14,

…frame = False, straight = True):

Pour info, les paramètres ont le sens suivant (pour chaque ligne):

—># arbre, écarts,x/y, rayon (commun)

—># noeud, face/edge/label color/fontsize

—># feuille, face/edge/label color/fontsize

—># ligne, color

—># traitement racine et string édition

—># titre, color/fontsize

—># cadre, vertical (si fils unique)

draw dessine le graphe d’un arbre (class Arbre), avec des paramètres par défaut, en particulier:

…– la fonction fun qui définit le label de noeud comme chaine d’affichage.

…– le booleen straigth qui indique si le trait père-fils unique doit être vertical

Pour un arbre binaire de recherche (class ABR, descendant de Arbre), il y a dans les noeuds, en plus du label, l’information de clé (key) et on souhaite avoir, par défaut,

…– fun qui donne la valeur de la clé (en plus ou à la place du label).

…– straitgth = False pour que, même en cas de fils unique, le fils gauche soit à gauche, le fils droit à droite.

D’où une spécialisation de draw, avec des valeurs par défaut adaptée aux ABR:

def drawABR(a, **kwargs):

…”””Appelle draw, mêmes paramètres et valeurs par défaut, sauf pour

…fun et straight dont les valeurs par défaut sont modifiées”””

…def abrfun(t):

…….if t.isleaf():

………..return str(t.key) + “\n” +str(t.label) # feuille (noeud terminal)

…….else: return str(t.key) # noeud interne

…if not ‘fun’ in kwargs: kwargs[‘fun’] = abrfun

…if not ‘straight’ in kwargs: kwargs[‘straight’] = False

…draw(a, **kwargs)

]]>
By: Antoine http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-189801 Wed, 27 Sep 2017 09:47:24 +0000 http://sametmax.com/?p=173#comment-189801 Désolé pour le non décalage des instructions dans le post précédent (Autre usage de **kwargs). Post à supprimer et je renvoie un post + lisible.

]]>
By: Antoine http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-189800 Wed, 27 Sep 2017 09:39:51 +0000 http://sametmax.com/?p=173#comment-189800 Autre usage de **kwargs: altération de paramètres par défaut (Python 3.2.2)

def draw(a, dx = 3, dy = 6, rayon = 1, # arbre, écarts,x/y, rayon (commun)

nfc=yellow, nec=default, nlc=black, nlfs=12, # noeud, face/edge/label color/fontsize

ffc=white, fec=default, flc=black, flfs=12, # feuille, face/edge/label color/fontsize

lc = black, # ligne, color

fun = lambda a: str(a.label), # traitement racine et string édition

title = ”, titlec = black, titlefs = 14, # titre, color/fontsize

frame=False, straight=True): # cadre, vertical (si fils unique)

draw dessine le graphe d’un arbre (class Arbre), avec des paramètres par défaut, en particulier:

— la fonction fun qui définit le label de noeud comme chaine d’affichage.

— le booleen straigth qui indique si le trait père-fils unique doit être vertical

Pour un arbre binaire de recherche (class ABR, descendant de Arbre), il y a dans les noeuds, en plus du label, l’information de clé (key) et on souhaite avoir, par défaut,

— fun qui donne la valeur de la clé (en plus ou à la place du label).

— straitgth = False pour que, même en cas de fils unique, le fils gauche soit à gauche, le fils droit à droite.

D’où une spécialisation de draw, avec des valeurs par défaut adaptée aux ABR:

def drawABR(a, **kwargs):

“””Appelle draw, avec les mêmes paramètres et valeurs par défaut, sauf pour

fun et straight dont les valeurs par défaut sont modifiées”””

def abrfun(t):

if t.isleaf(): return str(t.key) + “\n” +str(t.label) # feuille (noeud terminal)

else: return str(t.key) # noeud interne

if not ‘fun’ in kwargs: kwargs[‘fun’] = abrfun

if not ‘straight’ in kwargs: kwargs[‘straight’] = False

draw(a, **kwargs)

]]>
By: Antoine http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-189799 Wed, 27 Sep 2017 08:55:11 +0000 http://sametmax.com/?p=173#comment-189799 Autre usage de * (splat):

xyz = (1,2,3)

x,_,z = xyz

print(‘Python 2.7.12 et 3.5.2: xyz=’, xyz, ‘-> x=’, x,’, z=’,z)

s = “Marche avec Python 3.5.2 mais pas avec Python 2.7.12 même si from future”

a,*_,z= s # première et dernière lettre de s

print(‘s=’, s, ‘\n-> first=’, a, ‘, last=’,z)

]]>
By: Antoine http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-189205 Mon, 28 Aug 2017 19:57:19 +0000 http://sametmax.com/?p=173#comment-189205 J’ai beaucoup apprécié ces explications sur splat.

En python 3.5.2 (avant je ne sais pas), pour une fonction, on peut avoir tous les paramètres: normaux, *args, keyword_only, **kwargs. Par exemple:

def myfonct( x, y = 2, *args, z, t = 4, **kwargs ):

…. print(‘x =’,x, ‘; y =’,y)

…. print(‘args =’,args)

…. print(‘z =’,z, ‘; t =’,t)

…. print(‘kwargs =’,kwargs)

…. print( “kwargs.get(‘h’,12) -> h =”, kwargs.get(‘h’,12))

et on peut même appeler myfonct avec des arguments dans le désorde (sauf…):

myfonct(t=4, w=7, y=2, x=1, z=3, u=5) # sans *args

myfonct(1, z=3) # sans *args

myfonct(1, 2, 13,14,15, w=7, z=3, u=5, v=6)

myfonct(1, 2, [color.rgb.blue], z=3, u=5, v=6, t=4)

myfonct(x=2, y=1, 13,14,15, z=3, u=5, v=6) # refus

]]>
By: Siltaar http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-186256 Sun, 12 Mar 2017 14:20:57 +0000 http://sametmax.com/?p=173#comment-186256 Bonjour,

Je pense qu’un autre commentaire a déjà tenté de signaler la coquille, mais puisqu’elle est toujours présente :

multiply(1, 2, 3)

mais plus besoin d’une séquence !

26

1 * 2 * 3 == 6 (et pas 26)

]]>
By: Sam http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-175668 Wed, 10 Feb 2016 21:58:46 +0000 http://sametmax.com/?p=173#comment-175668 wut ?

]]>
By: lechevalier denis http://sametmax.com/operateur-splat-ou-etoile-en-python/#comment-175656 Wed, 10 Feb 2016 15:20:48 +0000 http://sametmax.com/?p=173#comment-175656 Un commentaire sur le post de Romain .

Merci à l’avance .

]]>