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 premire fonction, dite principale, qui va appeler =
deux sous fonctions. Dans la ralit 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 reoit.
Je me demandais si a posait problme que les arguments de mes sous-fon=
ctions aient le mme nom que les fonctions de niveaux suprieurs et en =
particulier l'appel des fonction (arg1 = arg1). N'y a-t-il pas risque=
de confusion pour l'interprteur?
L'ide c'est que si cela ne pose vraiment aucun problme, je peux alors=
donner le mme nom a tous les arguments qui reprsentent la mme cho=
se quel que soit le niveau de hirarchie et a me simplifie vraiment la=
vie

Merci d'avance pour vos rponse.

Olivier
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