fonction et sous fonctions dontles arguments ont le même nom
2 réponses
Olivier
Bonjour =E0 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 :
if __name__ =3D=3D "__main__":
main_function(arg1 =3D 5, arg2 =3D "a")
[/code]
Dans ce code j'ai une premi=E8re fonction, dite principale, qui va appeler =
deux sous fonctions. Dans la r=E9alit=E9 de mon code je fais appel =E0 4 ou=
5 sous-fonctions et la fonction principale est charg=E9 d'appeler les bonn=
es sous fonctions =E0 l'analyse des arguments qu'elle re=E7oit.
Je me demandais si =E7a posait probl=E8me que les arguments de mes sous-fon=
ctions aient le m=EAme nom que les fonctions de niveaux sup=E9rieurs et en =
particulier =E0 l'appel des fonction (arg1 =3D arg1). N'y a-t-il pas risque=
de confusion pour l'interpr=E9teur...?
L'id=E9e c'est que si cela ne pose vraiment aucun probl=E8me, je peux alors=
donner le m=EAme nom a tous les arguments qui repr=E9sentent la m=EAme cho=
se quel que soit le niveau de hi=E9rarchie et =E7a me simplifie vraiment la=
vie...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
News123
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 :
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.
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 :
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...
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 :
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
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
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é :
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é :