Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #15098 > unrolled thread

Re: Entre local et global

Started byLaurent <moky.math@gmail.com>
First post2011-10-28 11:29 +0200
Last post2011-10-28 12:28 +0200
Articles 2 — 2 participants

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Entre local et global Laurent <moky.math@gmail.com> - 2011-10-28 11:29 +0200
    Re: Entre local et global Laurent Claessens <moky.math@gmail.com> - 2011-10-28 12:28 +0200

#15098 — Re: Entre local et global

FromLaurent <moky.math@gmail.com>
Date2011-10-28 11:29 +0200
SubjectRe: Entre local et global
Message-ID<mailman.2280.1319794145.27778.python-list@python.org>
Le 28/10/2011 10:43, ll.snark a écrit :
> On 27 oct, 17:06, Laurent Claessens<moky.m...@gmail.com>  wrote:
>>  >  J'aimerais donc pouvoir indiquer dans fonca, que la variable lst est
>>  >  celle définie dans fonc1.
>>  >  Je ne veux pas d'une variable locale à fonca, ni une variable globale
>>  >  à tout mon fichier (cf exemple ci-dessous)
>>
>>  >  Une idée ?
>>
>>  Je ne suis pas très sûr que ça réponse à la question, mais une piste
>>  serait de faire de fonca une classe avec une méthode __call__ et une
>>  variable de classe:
>>
>>  class fonc2(object):
>>        fonc1.lst=[]
>>        def __call__(self,v):
>>            if len(fonc1.lst)<3:
>>                fonc1.lst=fonc1.lst+[v]
>>            print fonc1.lst
>>
>
>
> Effectivement, ça répond en partie à la question.
> Il faudra que je vois si en faisant comme ça, je peux résoudre mon pb
> de départ sur les décorateurs. MAis je suppose qu'entre une fonction
> et une classe qui possède une
> méthode __call__, il n'y a pas tant de différence que ça...


Moi je dirais que oui, il y a une différence énorme : dans une classe tu 
peux mettre beaucoup plus de choses ;)

class Exemple(object):
     def __init__(self,a):
         self.a=a
     def __call__(self,x):
         return a+x

f=Exemple(2)
g=Exemple(10)

f(1) # 3
g(1) # 11
f.a=6
f(1) # 7

Faire ça avec une fonction, ça me semblerait ardu, sauf à faire comme tu 
faisais : une fonction qui contient une fonction et qui la retourne. 
(mais à mon avis c'est moins lisible)

> Merci pour la réponse en tous cas. Je suppose donc qu'il n'y a pas de
> mot clé, un peu comme global, mais qui
> désigne une portée plus petite ?

Je ne sais pas.


> Je l'aurais sans doute vu dans la doc
> ou dans des bouquin si ça avait été le cas, mais je trouve
> que c'est bizarre.

A priori, ça ne me semble pas tellement bizarre. J'utiliserais une 
fonction seulement pour quelque chose qui a une entrée et une sortie qui 
dépend uniquement de l'entrée.
Pour quelque chose dont le comportement dépend du contexte (c'est le cas 
de ce que tu demandes), j'utiliserais une classe dans les attributs de 
laquelle je mettrais les éléments du contexte.
Bon, je dis ça, mais je ne suis pas assez fort pour prétendre être 
certain de ce qui est "bizarre" ou non :)

Bonne journée
Laurent

[toc] | [next] | [standalone]


#15102

FromLaurent Claessens <moky.math@gmail.com>
Date2011-10-28 12:28 +0200
Message-ID<j8e04e$jq8$1@news.univ-fcomte.fr>
In reply to#15098
Woops. This was aimed to the french speaking python's usenet. Sorry.

Laurent

Le 28/10/2011 11:29, Laurent a écrit :
> Le 28/10/2011 10:43, ll.snark a écrit :
>>  On 27 oct, 17:06, Laurent Claessens<moky.m...@gmail.com>   wrote:
>>>   >   J'aimerais donc pouvoir indiquer dans fonca, que la variable lst est
>>>   >   celle définie dans fonc1.
>>>   >   Je ne veux pas d'une variable locale à fonca, ni une variable globale
>>>   >   à tout mon fichier (cf exemple ci-dessous)
>>>
>>>   >   Une idée ?

[snip]

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web