Function args

Yermat loic at fejoz.net
Fri Apr 9 04:05:48 EDT 2004



Jean-Michel Caricand wrote:
> Bonjour Michel et merçi pour la réponse très rapide. Je tiens à préciser que
> nous développons en interne
> en langage Perl. Ma question peut donc sembler bête pour des programmeurs
> Python.
> 
> Après maintes recherches, je n'ai pas trouvé d'exemples me permettant de
> comprendre le mécanisme employé
> par Python pour passer un simple nombre à une fonction et le modifier
> réellement.
> 
> Imaginons que je veuille écrire une fonction qui permute deux variables,
> j'écris :
> 
> def permuter(a,b):
>   c = b
>   b = a
>   a = c
> 
> Si tout est objet, donc passé par référence a et b devraient être réellement
> modifier ? Pourtant ce n'est pas le cas.
> 
> [...]

En plus "permuter" est un mauvais exemple psuique l'on peut faire :
 >>> a = 1
 >>> b = 2
 >>> print a, b
1 2
 >>> (a, b) = (b, a)
 >>> print a, b
2 1

En gros, tous les types primitifs de python sont "expansés", autrement 
dit quand on les affecte à une autre variable, c'est une copie.
Tous les types complexes sont des références.

Yermat




More information about the Python-list mailing list