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 :

Les pointeurs en python


Sujet :

Python

  1. #1
    Membre averti Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Points : 358
    Points
    358
    Par défaut Les pointeurs en python
    Salut !

    J'aimerais savoir si c'est possible d'avoir un pointeur d'un tableau de float en python ?
    j'aimerais pouvoir transmétre ce pointeur a un programme C pour que celui ci puisent l'utiliser ensuite pour acceder au tableau...

    Une tel chose est tel possible ?

    Merci pour votre aide.

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Pas de pointeur en python.
    En revanche, il est possible d'importer un module qui est du C.
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import ekinoks
    ekinoks.write(0, 552.6) # par exemple, parametre index et valeur d'un float
    ekinoks étant une dll en C qui fait ce que vous voulez...
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  3. #3
    Membre averti Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Points : 358
    Points
    358
    Par défaut
    ok... mais alors comment faire si la fonction write de ma dll ekinoks est de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void write (float * tableauUneDimention);
    il faut forcement passer par des pointeurs pour pouvoir passer des tableaux...

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Là, comme ça, je pense qu'il faut faire une liste en python.

    Ensuite la fonction c doit récupérer cette liste (python) et la ranger dans un tableau (langage C).
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  5. #5
    Membre averti Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Points : 358
    Points
    358
    Par défaut
    erf :^/ du coup ca obligerai a faire des copies des variables dans la ram ...

    python aurais pu pencer a une fonction pour donner le pointeur just au cas ou... dans des cas comme ca par exemple :'(

    Bon... du coup je sais plus quoi faire

    Merci pour ton aide !

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    il faut savoir qu'en python, quasiment toutes les variables qui sont passer en parametre d'une fonction sont passé en REFERENCE et non pas par COPIE donc en fait dans le background de python, il passe surement a chaque fois des pointeurs aux fonction

    si tu crée une fonction qui prend en entrée un liste, modifie la liste et la renvoie, dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = [1,2, ... ]
     
    b = fonction(a)
    b et a seront identiques car la fonction aura modifié a car passé en parametre par réfférence et "b is a" renvoie True

    pour fonctionner par copie il y a 2 façon :

    soit importer la fonction copy du module copy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from copy import copy
     
    a = [1,2, ... ]
     
    b = fonction(copy(a))
    ou encore avec le constructeur du type utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = [1,2, ... ]
     
    b = fonction(list(a))
    Dans ces 2 cas la b et a sont 2 list difference et "b is a" renvoie False

    Voila j'espere que tu reviendra sur le forum pour voir ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LG]Les pointeurs: Forme en "Anneaux"
    Par k o D dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2004, 07h29
  2. Réponses: 4
    Dernier message: 13/08/2004, 18h39
  3. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 14h31
  4. pointeurs, toujours les pointeurs :/
    Par giviz dans le forum C
    Réponses: 16
    Dernier message: 08/10/2003, 15h02
  5. Pb de débutant sur les pointeurs!!!
    Par benji17c dans le forum C
    Réponses: 6
    Dernier message: 30/09/2003, 17h50

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