La simulation de Pointeurs en Python

Je suis en train de faire de la compilation croisée dans la maison de la langue(dih) de Python.

L'un des dih caractéristiques est les pointeurs et les références qui se comportent comme vous vous attendez de C ou de C++.

Par exemple, vous pouvez faire ceci:

a = [1,2];  // a has an array 
b = &a;     // b points to a
*b = 2;     // derefernce b to store 2 in a
print(a);   // outputs 2
print(*b);   // outputs 2

Est-il un moyen de reproduire cette fonctionnalité en Python.

Je tiens à souligner que je crois que j'ai confondu un peu de gens. Je ne veux pas de pointeurs en Python. Je voulais juste avoir une idée de l'Python experts, ce Python je devrait générer pour simuler le cas, je l'ai montré ci-dessus

Mon Python n'est pas la plus grande, mais jusqu'à présent, mon exploration n'a pas abouti à quelque chose de prometteur:(

Je tiens à souligner que nous sommes à la recherche à passer de nos dih plus courante de la langue, donc nous ne sommes pas vraiment lié à Python si quelqu'un peut suggérer une autre langue qui peut être plus approprié.

  • Si vous essayez de compiler un assez faible niveau de langue à un assez haut niveau? Avez-vous envisagé d'autres plates-formes pour votre VM à la place?
  • cluecc.sourceforge.net compile C à divers niveau élevé de langues, mais qui n'ont pas un backend Python encore. Il serait intéressant de voir comment il se comporte, bien 🙂
  • Un problème avec votre exemple est que vous êtes en utilisant des entiers, ce qui en Python est immuable. I. e, vous ne pouvez pas les modifier. Ceci, combiné avec le fait que vous avez une variable de tableau, qui vous le remplacer par un entier dans votre code C (qui est horrible à partir d'un C, point de vue) signifie que vous êtes demandé un moyen de la mauvaise utilisation de Python dans une manière similaire à la façon dont vous l'abus C. Qui n'a tout simplement pas de sens.
  • Regbro. La langue que je veux en venir n'est-ce pas C. je pensais que j'avais fait clair pour vous maintenant:)
  • Utiliser la taille-1 listes pour mutable références et non-const pointeurs: a=[smth] b=[a] b[0][0] = 2 print a[0] print b[0][0]
  • Pourquoi ne pas b=a? Écrit b=[a] semble exagéré depuis a déjà est en fait un pointeur vers smth.

InformationsquelleAutor chollida | 2009-07-17