fonction et sous fonctions dontles arguments ont le même nom

Le
Olivier
Bonjour à tous,
je me pose une question concernant les fonctions et ce que j'appellerai ici=
des sous fonctions.
Ci-dessous le code d'illustration de ma commande :

[code]

#!/usr/bin/env python

def main_function(arg1 = None, arg2 = None):
print "result_1 = "+sub_function_1(arg1 = arg1)
print "result_2 = "+sub_function_2(arg1 = arg2)

def sub_function_1(arg1 = None):
return str(arg1)


def sub_function_2(arg1 = None):
return str(arg1)

if __name__ == "__main__":
main_function(arg1 = 5, arg2 = "a")

[/code]

Dans ce code j'ai une première fonction, dite principale, qui va appeler =
deux sous fonctions. Dans la réalité de mon code je fais appel à 4 ou=
5 sous-fonctions et la fonction principale est chargé d'appeler les bonn=
es sous fonctions à l'analyse des arguments qu'elle reçoit.
Je me demandais si ça posait problème que les arguments de mes sous-fon=
ctions aient le même nom que les fonctions de niveaux supérieurs et en =
particulier à l'appel des fonction (arg1 = arg1). N'y a-t-il pas risque=
de confusion pour l'interpréteur?
L'idée c'est que si cela ne pose vraiment aucun problème, je peux alors=
donner le même nom a tous les arguments qui représentent la même cho=
se quel que soit le niveau de hiérarchie et ça me simplifie vraiment la=
vie

Merci d'avance pour vos réponse.

Olivier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
News123
Le #23812941
On 06/29/2011 11:02 AM, Olivier wrote:
Bonjour à tous,
je me pose une question concernant les fonctions et ce que j'appellerai ici des sous fonctions.
Ci-dessous le code d'illustration de ma commande :

[code]

#!/usr/bin/env python

def main_function(arg1 = None, arg2 = None):
print "result_1 = "+sub_function_1(arg1 = arg1)
print "result_2 = "+sub_function_2(arg1 = arg2)

def sub_function_1(arg1 = None):
return str(arg1)


def sub_function_2(arg1 = None):
return str(arg1)

if __name__ == "__main__":
main_function(arg1 = 5, arg2 = "a")

[/code]

Dans ce code j'ai une première fonction, dite principale, qui va appeler deux sous fonctions. Dans la réalité de mon code je fais appel à 4 ou 5 sous-fonctions et la fonction principale est chargé d'appeler les bonnes sous fonctions à l'analyse des arguments qu'elle reçoit.
Je me demandais si ça posait problème que les arguments de mes sous-fonctions aient le même nom que les fonctions de niveaux supérieurs et en particulier à l'appel des fonction (arg1 = arg1). N'y a-t-il pas risque de confusion pour l'interpréteur...?
L'idée c'est que si cela ne pose vraiment aucun problème, je peux alors donner le même nom a tous les arguments qui représentent la même chose quel que soit le niveau de hiérarchie et ça me simplifie vraiment la vie...

Merci d'avance pour vos réponse.

Olivier



pas d'risque. C'est prevu comme ca.
Laurent Claessens
Le #23815431
Dans ce code j'ai une première fonction, dite principale, qui va appeler deux sous fonctions. Dans la réalité de mon code je fais appel à 4 ou 5 sous-fonctions et la fonction principale est chargé d'appeler les bonnes sous fonctions à l'analyse des arguments qu'elle reçoit.
Je me demandais si ça posait problème que les arguments de mes sous-fonctions aient le même nom que les fonctions de niveaux supérieurs et en particulier à l'appel des fonction (arg1 = arg1). N'y a-t-il pas risque de confusion pour l'interpréteur...?
L'idée c'est que si cela ne pose vraiment aucun problème, je peux alors donner le même nom a tous les arguments qui représentent la même chose quel que soit le niveau de hiérarchie et ça me simplifie vraiment la vie...

Merci d'avance pour vos réponse.

Olivier






Les fonctions ont leur propre "espace de nom". L'exemple suivant produit
une erreur :

#! /usr/bin/python
# -*- coding: utf8 -*-

def foo():
a=1

def bar():
print a


foo()
bar()

Traceback (most recent call last):
File "./ess.py", line 13, in <module>
bar()
File "./ess.py", line 9, in bar
print a
NameError: global name 'a' is not defined

En effet, la variable "a" est uniquement définie dans foo. La fonction
bar n'a aucune conscience des noms de choses qui existent dans foo.

Pour autant que je le sache, il est même impossible de modifier le code
de bar pour retrouver la valeur de 'a' dans foo.

Bref, pas de problèmes, tu peux foncer; c'est même conseillé :

import this
(cf la dernière ligne)

Laurent
Publicité
Poster une réponse
Anonyme