PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > **kwargs versus apply()
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
**kwargs versus apply()

Réponse
 
LinkBack Outils de la discussion
Vieux 28/08/2007, 20h51   #1 (permalink)
Cémoi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut **kwargs versus apply()

Bonsoir,

j'ai défini une fonction dont le premier argument attendu est une
méthode d'instance.
Tout fonctionnait nickel jusqu'au moment ou j'ai été confronté au cas ou
la méthode passée en argument a elle-même besoin de pas mal d'arguments
(nommés).
Je me suis dis "pas de problème, j'ai repéré la fonction qui va bien, à
savoir apply()"....
Sauf que l'utilisation de apply() est déconseillée.
D'un autre coté il me semble avoir lu je ne sais plus ou (un document
qui ressemble à la PEP8) que les protos de fonctions/méthodes avec *args
et **kwargs étaient à éviter à la faveur d'arguments positionnels et/ou
nommés explicites.
La question est donc très simple: est ce que j'utilise apply() dans ma
fonction ou est ce que je modifie le proto de mes méthodes avec **kwargs
comme argument (beurk!) ?


Merci pour vos éclairages,


Laurent
  Réponse avec citation
Vieux 28/08/2007, 22h15   #2 (permalink)
Cémoi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: **kwargs versus apply()

Bruno Desthuilliers a écrit :
> Cémoi a écrit :
>> Bonsoir,
>>
>> j'ai défini une fonction dont le premier argument attendu est une
>> méthode d'instance.
>> Tout fonctionnait nickel jusqu'au moment ou j'ai été confronté au cas ou
>> la méthode passée en argument a elle-même besoin de pas mal d'arguments
>> (nommés).
>> Je me suis dis "pas de problème, j'ai repéré la fonction qui va bien, à
>> savoir apply()"....

>
> deprecated
>
>> Sauf que l'utilisation de apply() est déconseillée.

>
> !-)
>
>> D'un autre coté il me semble avoir lu je ne sais plus ou (un document
>> qui ressemble à la PEP8) que les protos de fonctions/méthodes avec *args
>> et **kwargs étaient à éviter à la faveur d'arguments positionnels et/ou
>> nommés explicites.
>> La question est donc très simple: est ce que j'utilise apply() dans ma
>> fonction ou est ce que je modifie le proto de mes méthodes avec **kwargs
>> comme argument (beurk!) ?

>
> Ni l'un ni l'autre... Par contre, relire la doc et faire quelques
> essais, ça peut être un bon début !-) prout ;o)
>
> class MaClasse(object):
> def __init__(self, name):
> self.name = name
>
> def fait_ceci(self, toto, tata=42):
> print "%s (name=%s) called with toto=%s and tata=%s" \
> % (self, self.name, toto, tata)
>
>
> def fonction(meth, *args, **kw):
> return meth(*args, **kw)


Ca ne m'était tout simplement pas venu à l'esprit (tout perturbé que
j'étais à l'idée de refaire tous les protos de mes belles méthodes ... ;o)
Pour rebondir sur tes conseils de relecture de docs et d'essais (une
petite demi-heure* tous les matins de "gym" me fait le plus grand bien),
je dirai que je me retrouve quand même avec des **kwargs (héhé).
>
> obj = MaClasse('machin')
> fonction(obj.fait_ceci, 'yo', 33)
>
>
>> Merci pour vos éclairages,

>
> De rien...


Si, si, grand merci, en plus t'as parfaitement capté (correctement du
premier coup mes besoins, pas forcément exprimés avec la terminologie
adéquate ....



* tiens, je vais me relire la PEP8, ça peut pas faire de mal
  Réponse avec citation
Vieux 29/08/2007, 07h16   #3 (permalink)
Méta-MCI \(MVP\)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: **kwargs versus apply()

Bonjour !

Y a-t'il une (bonne) raison, pour ne pas appeler la fonction "Apply" ?

def Apply(meth, *args, **kw):
return meth(*args, **kw)

obj = MaClasse('machin')
Apply(obj.fait_ceci, 'yo', 33)

(ou apply2, applyBD, appli, aïe, ...)
ou simplement apply, et en l'incluant dans le builtin.

@+

MCI




  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 03h15.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,08182 seconds with 11 queries