Variablen explizit per Referenz übegeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
DasPinsch

Variablen explizit per Referenz übegeben

Beitragvon DasPinsch » Mittwoch 4. Mai 2005, 17:41

Wie kann man Variablen explizit per Referenz übergeben?
Beispiel:

Code: Alles auswählen

def init(screen):
   pygame.init()
   screen = pygame.display.set_mode((1024, 768))

screen = None
init(screen)



screen ist danach immer noch None... Ich weiß dass ich hier z.B. auch mit einem Rückgabewert arbeiten könnte, allerdings geht das in meinem Programm nur schlecht.
MfG

Edit (Leonidas): Code in Python-Tags gesetzt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 4. Mai 2005, 18:12

Das müsstest du entweder:
  • über global lösen, was aber meist schlechter Stil ist.
  • Eine Klasse erstellen und aus screen self.screen machen, so wie hier
My god, it's full of CARs! | Leonidasvoice vs Modvoice
DasPinsch

Beitragvon DasPinsch » Donnerstag 5. Mai 2005, 12:41

Mhh, jetzt weiß ich auch wieder warum ich C++ so mag, man weiß was man tut =)

Werde es dann anderes lösen müssen, was allerdings die komplette Eleganz meines Programmes zunichte macht :evil: :wink:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Variablen explizit per Referenz übegeben

Beitragvon gerold » Donnerstag 5. Mai 2005, 15:12

DasPinsch hat geschrieben: Ich weiß dass ich hier z.B. auch mit einem Rückgabewert arbeiten könnte, allerdings geht das in meinem Programm nur schlecht.

Hi!
Das hat schon seine Richtigkeit mit der Rückgabe unter Python. Was meinst du ist einfacher und durchschaubarer für jemanden der den Code liest?
init(screen)
oder
screen = init()
Beim zweiten Aufruf ist jedem sofort klar, dass die Variable screen verändert oder neu erstellt wird. Beim ersten Aufruf muss ich init() kennen um zu wissen, dass screen verändert wird. Das ist einer der wunderbaren Vorteile von Python. Es wird einem nicht so einfach gemacht, unüberschaubaren Code zu schreiben.

mfg
Gerold
:-)
Zuletzt geändert von gerold am Donnerstag 5. Mai 2005, 19:03, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 5. Mai 2005, 16:48

DasPinsch hat geschrieben:Mhh, jetzt weiß ich auch wieder warum ich C++ so mag, man weiß was man tut =)

Nein, das ist keine Eleganz. Das wäre eine Nebenwirkung, die man am besten vermeidet.

Ich weiß ja nicht warum sich gerolds Vorschlag nicht in deinem Programm einsetzen lässt, ich würde es so machen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: WhiteyW