IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Défi ? Assouplir l'appel d'une fonction


Sujet :

Python

  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Défi ? Assouplir l'appel d'une fonction
    Bonjour,
    j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #! /usr/bin/env python
    #coding=utf-8
     
    def rgb(r,g,b):
        print(r)
        print(g)
        print(b)
        print()
     
    rgb("r", "g", "b")
    Je voudrais en fait avoir aussi la possibilité de faire un appel comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    malist = ["r","g","b"]
    rgb(malist)
    Est-ce possible ?

  2. #2
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Je m'auto-réponds. Voici un principe, il reste à ajouter des procédures de vérification mais ce n'est pas mon propos ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #! /usr/bin/env python
    #coding=utf-8
     
    def rgb(*args):
        if len(args) == 1:
            args = args[0]
     
        for oneArg in args:
            print(oneArg)
        print()
     
    rgb("r","g","b")
    mylist = ["r","g","b"]
    rgb(mylist)

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci c'est super.

    Voilà que je deviens schizophrène...

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Félicitations !
    Une fois de plus le vieil adage se vérifie: "L'enseignement n'est nécessaire que quand il est superflu!".
    Tu as aussi cette possibilité, mais c'est moins bien que ce que tu proposes:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def rgb (L=[],r=0,g=0,b=0):
        if L!=[]:
            r=L[0]
            g=L[1]
            b=L[2]
        print r,g,b
     
    rgb(["r","g","b"]) 
    rgb(r="rouge",g="vert",b="bleu")
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut
    Tu peux aussi passer par un dictionnaire si tu veux encore complexifier.

    Je mets une référence ici si ca intéresse d'autres gens :

    http://python.developpez.com/faq/?page=Fonction

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Une fois de plus le vieil adage se vérifie: "L'enseignement n'est nécessaire que quand il est superflu!".
    Je suis févrieux donc il va falloir m'expliquer un peu cet adage...

    Citation Envoyé par Elenaher Voir le message
    Tu peux aussi passer par un dictionnaire si tu veux encore complexifier.
    Je connaissais déjà mais à l'usage je n'en ai jamais eu vraiment besoin. De plus, mon problème est différent.

  7. #7
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je suis févrieux donc il va falloir m'expliquer un peu cet adage...
    C'est seulement en février qu'on est févrieux, en juin on peut être à la limite fiévreux.
    Bon supposons que ce soit le cas, alors tu es tout excusé.
    Un conseil, un tuyau, une aide, n'est utile pour un individu que dans la mesure où l'individu en question était a priori capable de trouver lui-même la solution. Dans tout autre cas cela ne sert à rien sauf peut être à lui retirer (très momentanément) une épine du pied.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    C'est seulement en février qu'on est févrieux, en juin on peut être à la limite fiévreux.
    Preuve que je ne mens pas sur la relative inefficacité de mes neurones en ce moment...

    Citation Envoyé par Zavonen Voir le message
    Un conseil, un tuyau, une aide, n'est utile pour un individu que dans la mesure où l'individu en question était a priori capable de trouver lui-même la solution. Dans tout autre cas cela ne sert à rien sauf peut être à lui retirer (très momentanément) une épine du pied.
    Question subsidiaire : cet adage s'applique-t-il à ma compréhension du français ?

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    salut,

    je te propose une variante, plus compacte et qui évite une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def rgb(arg,*args):
        print (arg)
        for oneArg in args:
            print (oneArg)
    en effet, ton code peut avoir un comportement inapproprié dans ce cas:


  10. #10
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Dans certains cas vos codes peuvent être utile, mais en général n'est-ce pas mieux de laisser la responsabilité à l'appelant ?

    Si celui-ci sait qu'il a une liste l = ["r","g","b"] et que la fonction prend 3 arguments, il peut facilement appeler rgb(*l). L'appelant saura toujours s'il a une liste ou 3 arguments; qu'apporte vraiment la "surcharge" ?

  11. #11
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par kango Voir le message
    ...ton code peut avoir un comportement inapproprié dans ce cas...
    Il reste à faire des vérifications dans mon code, je vais le faire. Quant à l'utilisation de *, elle n'a pas lieu d'être dans mon cas comme je l'explique ci-après.

    Citation Envoyé par dividee Voir le message
    Dans certains cas vos codes peuvent être utile, mais en général n'est-ce pas mieux de laisser la responsabilité à l'appelant ?
    En fait, dans le cadre de mon éditeur de documents mathématiques, l'utilisateur va pouvoir utiliser un pseudo-langage de programmation proche du Python mais qui ne sera pas exactement du Python (ceci afin de répondre à pas mal de contraintes que je me suis imposé pour améliorer la prise en main de mon logiciel).
    Ce pseudo-langage va être traduit ensuite en un script Python qui sera exécuté. Avec la méthode ci-dessus, je vais avoir très peu d'analyse syntaxique à faire. Avec la méthode rgb(*l), cela me demanderait de repérer les variables, leur type… Avec l'autre, c'est Python qui va s'en charger.

  12. #12
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Voilà comment je ferais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #! /usr/bin/env python
    # PYTHON 3
     
    # First try...
    def rgb(*args):
        if len(args) == 1:
            args = args[0]
     
            if not isinstance(args, list):
                raise TypeError("A list of three strings, or three string arguments are expected. This is not the case.")
     
        if len(args) != 3:
            raise TypeError("Too much arguments. Three strings are expected. This is not the case.")
     
        for oneArg in args:
            if not isinstance(oneArg, str):
                raise TypeError("One of the argument is not a string.")
            print(oneArg)
        print()
     
    rgb("r","g","b")
     
    malist = ["r","g","b"]
    rgb(malist)
     
    try:
        problem = [1,"g","b"]
        rgb(*problem)
    except Exception as e:
        print(str(e))
     
    try:
        problem = ["r","g","b","alpha"]
        rgb(*problem)
    except Exception as e:
        print(str(e))
     
    try:
        problem = ['abc']
        rgb(*problem)
    except Exception as e:
        print(str(e))

  13. #13
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir rambc,

    Et pourquoi ne pas simplement utiliser type ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def rgb(*args):
        for oneArg in args:
            if type(oneArg) == 'dict':
            ....
            else:
                print(oneArg)
        print()
     
    rgb("r","g","b")
    mylist = ["r","g","b"]
    rgb(mylist)
    #etc...
    rgb("r","g","b", mylist, mydic)

  14. #14
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    isinstance et type sont à proscrire au maximum avec Python qui est un langage typé dynamiquement.

    ils donnent l'illusion qu'on a réussi à résoudre un problème . par exemple, en mettant en testant avec isinstance si c'est une liste, ta méthode n'est plus compatible avec les tuples. et si tu rajoutes isintance pour les tuples, elle ne marchera pas avec les tableaux numpy... c'est sans fin.

    l'exemple qui ne marche pas que tu donnes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    malist = ["r","g","b"]
    rgb_2(malist)
    n'est pas un bon exemple. soit la fonction rgb prend un itérable en argument, soit elle prend plusieurs valeurs directement. C'est un choix à faire car on peut pas surcharger une fonction en python

    si tu n'arrives pas à trancher, il faut passer par des arguments nommés comme suggéré par Zavonen ou laisser la responsabilité à l'appelant comme suggéré par Dividee et garder la fonction en l'état (c'est ce que je ferais pour ma part)

    http://www.canonical.org/~kragen/isinstance/

  15. #15
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par kango Voir le message
    soit la fonction rgb prend un itérable en argument, soit elle prend plusieurs valeurs directement. C'est un choix à faire car on peut pas surcharger une fonction en python
    Relis le message que j'ai écrit juste au-dessus pour voir pourquoi je passe par la méthode peu Pythonesque ci-dessus.

    Si j'étais dans un cadre purement Python, je n'aurais même pas eu l'idée de m'interroger là-dessus.

  16. #16
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Pour le fun, un petit décorateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    from itertools import chain
     
    def args(*types):
        """Returns a decorator which typechecks the arguments of the function,
        flattening the arguments if necessary"""
        def deco(f):
            def wrapper(*args):
                real_args = []
                ia = iter(args)
                for t in types:
                    try:
                        while True:
                            a = ia.next()
                            if isinstance(a,t):
                                real_args.append(a)
                                break
                            elif isinstance(a, (tuple,list)):
                                ia = chain(iter(a),ia)
                            else:
                                raise TypeError("Expected arguments: " + str(types))
                    except StopIteration:
                        raise TypeError("Not enough arguments. Expected " + str(types))
                try:
                    ia.next()
                except StopIteration:
                    return f(*real_args)
                raise TypeError("Too much arguments. Expected " + str(types))
            wrapper.__name__ = f.__name__
            return wrapper
        return deco
     
    @args(str,str,str)
    def rgb(a,b,c):
        print a,b,c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    >>> rgb(1,2,3)
    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
      File "C:\Prog\python\test0.py", line 18, in wrapper
        raise TypeError("Expected arguments: " + str(types))
    TypeError: Expected arguments: (<type 'str'>, <type 'str'>, <type 'str'>)
    >>> rgb("abc")
    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
      File "C:\Prog\python\test0.py", line 20, in wrapper
        raise TypeError("Not enough arguments. Expected " + str(types))
    TypeError: Not enough arguments. Expected (<type 'str'>, <type 'str'>, <type 'str'>)
    >>> rgb("r","g","b")
    r g b
    >>> rgb(["r","g","b"])
    r g b
    >>> rgb(["r","g"],"b")
    r g b
    >>> rgb(["r","g"],[[["b"]]])
    r g b
    >>> rgb("r","g","b","a")
    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
      File "C:\Prog\python\test0.py", line 27, in wrapper
        raise TypeError("Too much arguments. Expected " + str(types))
    TypeError: Too much arguments. Expected (<type 'str'>, <type 'str'>, <type 'str'>)
    Mais bon; ce n'est pas parfait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @args(list,int)
    def f(l,i):
        print l[i]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    >>> f((3,4),1)
    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
      File "C:\Prog\python\test0.py", line 18, in wrapper
        raise TypeError("Expected arguments: " + str(types))
    TypeError: Expected arguments: (<type 'list'>, <type 'int'>)
    >>> f([3,4],1)
    4
    >>> f([[3,4],1])
    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
      File "C:\Prog\python\test0.py", line 20, in wrapper
        raise TypeError("Not enough arguments. Expected " + str(types))
    TypeError: Not enough arguments. Expected (<type 'list'>, <type 'int'>)
    >>> f(([3,4],1))
    4
    [EDIT]: J'avais oublié le cas où il y a trop d'arguments

  17. #17
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    Citation Envoyé par rambc Voir le message
    Si j'étais dans un cadre purement Python, je n'aurais même pas eu l'idée de m'interroger là-dessus.
    bonjour,

    tu es dans un cadre purement Python ce n'est pas parce que ton code traite des infos qui ne sont pas du Python que tu n'y es pas.

    comme ta fonction a l'air de ne vouloir fonctionner que pour 3 et exactement 3 arguments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def rgb(a,b,c):
        print a, b, c
     
    l = [1,2,3]
    rgb(*l)
    >>> 1, 2, 3
    rgb(1,2,3)
    >>> 1, 2, 3
    m = (1,2,3,4)
    rgb(*m)
    >>> TypeError: rgb() takes exactly 3 arguments (4 given)
    n = set(1,2)
    rgb(*n)
    >>> TypeError: rgb() takes exactly 3 arguments (2 given)
    méthode qui lasse à Python la tâche de vérifier lui même le nombre d'arguments et suffisamment souple pour traiter tout type d'itérable. la responsabilité de l'appel (avec * ou pas) est à la charge de l'appelant.

  18. #18
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Tout à fait d'accord mais...

    Citation Envoyé par rambc
    ... dans le cadre de mon éditeur de documents mathématiques, l'utilisateur va pouvoir utiliser un pseudo-langage de programmation proche du Python mais qui ne sera pas exactement du Python (ceci afin de répondre à pas mal de contraintes que je me suis imposé pour améliorer la prise en main de mon logiciel).
    Ce pseudo-langage va être traduit ensuite en un script Python qui sera exécuté. Avec la méthode ci-dessus, je vais avoir très peu d'analyse syntaxique à faire. Avec la méthode rgb(*l), cela me demanderait de repérer les variables, leur type… Avec l'autre, c'est Python qui va s'en charger.
    C'est pour ne pas voir trop d'analyse syntaxique à faire dans le pseudo-langage que je cherchais comment implémenter la fonctionnalité qui est le sujet de ce post.

  19. #19
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par dividee Voir le message
    Pour le fun, un petit décorateur...
    Cela me plait carrément plus car je vais pouvoir appliquer ceci à différents types de fonctions et aussi à différentes souplesses d'appel. C'est super...

    J'en apprends pas mal en ce moment sur quelques points techniques dont je n'avais pas eu besoin jusqu'à présent. Comme dit l'adage... Non, en fait je suis nul en adage (voir ci-dessus pourquoi ).

  20. #20
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je trouve cette discussion particulièrement intéressante, parce que le sujet l'est et par la diversité et la qualité des réponses. On passe en revue les possibilités de Python qui sont nombreuses et souvent méconnues, insoupçonnées.
    dans le cadre de mon éditeur de documents mathématiques, l'utilisateur va pouvoir utiliser un pseudo-langage de programmation proche du Python mais qui ne sera pas exactement du Python (ceci afin de répondre à pas mal de contraintes que je me suis imposé pour améliorer la prise en main de mon logiciel).
    Ce sujet m'intéresse, on peut en savoir un peu plus, tu as déjà publié quelque chose ?
    J'avais réfléchi à ce sujet en 2008 pour arriver à la conclusion que le Python basique était si simple qu'il pouvait en l'état servir de langage de description d'algorithmes, faisant l'économie d'un pseudo-code. J'ai donc illustré un cours de matsh par des exemples en python et je donne des exos qui consistent (entre autres) à écrire de petits programmes python. Ce n'est apparemment pas ta conclusion.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. appel d'une fonction à partir d'un popup
    Par villeneuvejsp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/12/2004, 18h00
  2. Appel d'une fonction
    Par georgeabitbol dans le forum ASP
    Réponses: 4
    Dernier message: 08/07/2004, 15h29
  3. Réponses: 4
    Dernier message: 02/06/2004, 17h35
  4. Appel d'une fonction
    Par jfphan dans le forum ASP
    Réponses: 4
    Dernier message: 14/04/2004, 16h06
  5. A la recherche de l'appel d'une fonction...
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 24/09/2003, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo