Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Python: Variablennamen nicht interpolieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.11.2005
    Beiträge
    51

    Python: Variablennamen nicht interpolieren

    Hallo,

    ich hab recht frisch mit Python angefangen und habe eine bescheidene Frage,
    am besten am Beispiel verdeutlicht:

    Code:
    >>> a, b, c =1,2,3
    >>> for j in (a, b, c):
    ...     print j
    ...
    1
    2
    3
    Ich möchte, dass aber a, b, c ausgedruckt werden, bzw eigentlich will ich beides,
    sowas wie

    Code:
    a: 1
    b: 2
    c: 3
    als Ausgabe...

    Da es ja keinen eigentlichen Variablen in Python gibt, sondern nur Namen und Objekte, erscheint mir das nicht so einfach,
    hab jetzt auch schon 1 Stunde im Netz geschaut und keine Erleuchtung erhalten.

    MfG
    Rahul

  2. #2
    Registrierter Benutzer
    Registriert seit
    17.11.2003
    Beiträge
    17
    Hallo, ich kenne mich nicht besonders gut mit Python aus, aber da noch keiner geantwortet hat, hilft es vielleicht trotzdem.
    Soweit mir bekannt, ist das, was Du tun willst nicht ohne weiteres möglich.
    Du müsstest den Variablennamen per Hand ausgeben lassen.
    Eine Idee, die ich noch habe wäre, dass Du Deine Variablen in einem Dictionary speicherst.
    http://docs.python.org/tut/node7.htm...00000000000000
    Damit hast Du ein Schlüssel-Wert-Paar, was Du dann (in einer Schleife) ausgeben kannst.

    Gruß, nidhoegg

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    nidhoegg zeigt den richtigen Ansatz.

    a, b und c wird ein Wert zugewiesen:
    Code:
    (a, b, c) = (1, 2, 3)
    entspricht
    Code:
    a = 1
    b = 2
    c = 3
    Genau gesagt ist die Variable ein Name für eine Referenz auf das Integer-Objekt 1.
    An diesen Namen kommst du nicht so ohne weiteres heran, was normalerweise auch nicht notwendig ist. Das hat dann mit Sprach-Introspektion zu tun, was in Python einigermassen einfach ist (vars() liefert ein dictionary u.a. mit a, b, c).

    Was du ja eigentlich wolltest, sind die Werte für a, b und c auszugeben. In Python löst man das üblicherweise mit einem Dictionary:
    Code:
    d = { 'a' : a, 'b' : b, 'c' : c }
    for n, v in d.iteritems():
        print n, v
    Die zweite Alternative ist wie schon erwähnt, das Dictionary des lokalen namespace:
    Code:
    for name in ('a', 'b', 'c'):
        print name, '=', vars()[name]
    Gruess, Andy

  4. #4
    Registrierter Benutzer
    Registriert seit
    17.07.2003
    Beiträge
    87
    dir ist ein kleiner typo unterlaufen, ich berichtige es mal
    Zitat Zitat von RapidMax Beitrag anzeigen
    Python löst man das üblicherweise mit einem Dictionary:
    Code:
    d = { 'a' : 1, 'b' : 2, 'c' : 3 }
    for n, v in d.iteritems():
        print n, ": ", v
    Ergibt das gewünschte (unsortierte):
    a : 1
    c : 3
    b : 2

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •