göra en sträng av ett variabelnamn och/eller tvärtom

  • Författare
  • Meddelande
Användarvisningsbild

annettekusma

sql-guru

  • Inlägg: 102
  • Blev medlem: 11 aug 2017, 10:16
  • Ort: Eskilstuna

göra en sträng av ett variabelnamn och/eller tvärtom

Inlägg14 okt 2017, 17:25

Det har hänt flera gånger under kursens senare moment att jag haft ett behov av att omvandla strängar till variabelnamn eller göra strängar av variabelnamn. Jag har löst det på annat sätt hittills eftersom jag aldrig hittat några självklara träffar när jag sökt efter metoder eller moduler som gör det.

Kan någon tala om nån metod, eller hinta om nåt bra sökbegrepp i sammanhanget?

Ett exempel på vad jag har velat göra är detta: man har en hel del variabler i programmet och vid vissa tilfällen vill man ju skriva ut dem i debugsyfte. Istället för att skriva

Kod: Markera allt
print("'min_variabel' är just nu: %s" % min_variabel)


skulle man bara vilja definiera en egen funktion så att man sedan kan skriva:

Kod: Markera allt
debug(min_variabel)


Den funktionen skulle se ut något i stil med:

Kod: Markera allt
def debug(en_variabel):
    string = var_to_str(en_variabel)
    output = "'%s' är just nu %s" % (string, en_variabel)
    print(output)


Ett annat exempel är att man har ett dictionary och vill vandla om nycklarna till variabelnamn. Då blir det ungefär så här:

Kod: Markera allt
dictionary = {'hej': 'hopp', 'hipp': 'happ'}
for key in dictionary.keys():
    key.make_var = dictionary[key]


Det skulle då vara som att deklarera
Kod: Markera allt
hej = 'hopp'
hipp = 'happ'
Användarvisningsbild

Lew

dbwebb

  • Inlägg: 406
  • Blev medlem: 05 sep 2012, 13:42
  • Ort: Karlskrona

Re: göra en sträng av ett variabelnamn och/eller tvärtom

Inlägg16 okt 2017, 08:21

Du kan kika på funktionen eval()

https://docs.python.org/3/library/functions.html#eval
https://stackoverflow.com/questions/2553354/how-to-get-a-variable-name-as-a-string-in-python

Kod: Markera allt
my_var = "telefon"

def debug(en_variabel):
    string = en_variabel
    output = "'%s' är just nu %s" % (string, eval(en_variabel))
    print(output) # prints 'my_var' är just nu telefon


debug("my_var")
When in doubt, use brute force.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11114
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: göra en sträng av ett variabelnamn och/eller tvärtom

Inlägg16 okt 2017, 09:10

Sträng som variabelnamn, kallas "Variable variables" i PHP.
Kod: Markera allt
$str = "mumin";
$$str = "trollet";
echo $mumin; // "trollet"

http://php.net/manual/en/language.varia ... riable.php
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 12 gäster