Hallo,
mein Code siehe langweilig aus, da sehr viel ähnlich Code vorhanden ist. In diesem Fall ist eine Funktion nicht schlecht, aber ich will die Variablen nicht übergeben oder als globale Variablen verwenden.
deshalb will ich keine Funktion verwenden, sondern das Script macht Copy/Paste! Gibt es so was unter Python?
gibt es eine Alternative dazu?
Danke für Hinweis oder Tips
HL
gibt es so was wie Macro unter C/C++
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du kannst Klassen verwenden, dann musst du keine Variablen Programmglobal setzen, sonsrn kannst sie Klassenblobal verwenden was dann doch etwas besser ist.
Ein Python Präprozessor für Python.. das wäre unpythonic und unpraktisch, ganz zu schweigen von fehleranfällig und schwer zu lesen.
Ein Python Präprozessor für Python.. das wäre unpythonic und unpraktisch, ganz zu schweigen von fehleranfällig und schwer zu lesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo Leonidas,
Jaja, Makro schwer zu lesen, aber besser als mein Copy/Paste
(Makor ist doch weniger fehlerfällig, nicht vergiss die Vergleichbasis!)
Hast du besser Idee das folgende Code zu formatieren:
if (): # Topebene
....
if (): # zweite Ebene
....
if (): #dritte ...
Schlimm, nicht?
Um Tips gebeten!
HL
Jaja, Makro schwer zu lesen, aber besser als mein Copy/Paste

Hast du besser Idee das folgende Code zu formatieren:
if (): # Topebene
....
if (): # zweite Ebene
....
if (): #dritte ...
Schlimm, nicht?
Um Tips gebeten!
HL
Hi Leonidas,
das Code ist nicht sinnvoll. Das Problem kann ich wie folgt beschreiben:
Ich habe ein Baum mit Unterbäumer oder nur Blätter. Ich muss zunächst ein Baum aus Bäumen finden (die erste if-Ebene). Wenn ein Baum gefunden wurde, muss ich prüfen, ob es Unterbäume gibt. So wird es das zweite if-Ebene. Die Suchtiefe geht weiter. Ich nehme an ich kann nicht binäre Suchalgorithmus verwenden, da ich gar nicht weiss, ob es gibt. Wenn es gibt, dann wird durch Zufallgerator ein gewählt und macht weiter!
Rekusiver Suche? nicht wirklich, da die unteren Ebenen nicht gleiche Eigenschaften vorhanden.
Deswegen brauche ähnliches wie Makros in C++ (dachte ich am mindestens)
Tips?
Habe ich gerade ein Idee,
gibt es so was wie in C++, Callback Funktion, oder eine Funktion kann Function als Parameter übergeben?
Du hast schon mir bei anderen Posten mehrfach geholfen, danke dir noch einmal!
HL
das Code ist nicht sinnvoll. Das Problem kann ich wie folgt beschreiben:
Ich habe ein Baum mit Unterbäumer oder nur Blätter. Ich muss zunächst ein Baum aus Bäumen finden (die erste if-Ebene). Wenn ein Baum gefunden wurde, muss ich prüfen, ob es Unterbäume gibt. So wird es das zweite if-Ebene. Die Suchtiefe geht weiter. Ich nehme an ich kann nicht binäre Suchalgorithmus verwenden, da ich gar nicht weiss, ob es gibt. Wenn es gibt, dann wird durch Zufallgerator ein gewählt und macht weiter!
Rekusiver Suche? nicht wirklich, da die unteren Ebenen nicht gleiche Eigenschaften vorhanden.
Deswegen brauche ähnliches wie Makros in C++ (dachte ich am mindestens)
Tips?
Habe ich gerade ein Idee,
gibt es so was wie in C++, Callback Funktion, oder eine Funktion kann Function als Parameter übergeben?
Du hast schon mir bei anderen Posten mehrfach geholfen, danke dir noch einmal!
HL
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klar:Anonymous hat geschrieben:gibt es so was wie in C++, Callback Funktion, oder eine Funktion kann Function als Parameter übergeben?
Code: Alles auswählen
def proc():
print "Hi, I'm proc"
def caller(callable):
callable()
caller(proc)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi Leonidas,
danke dir, wirklich Prima! so brauche ich doch nicht mehr Makro
Ein Mangel noch, wenn ich Klasse verwende, gibt es kein Problem, aber ich habe nur ungebundene Funktionen und hasse globale Variablen!
Wie kann ich ohne return (eine Tuple) verwenden, die geänderte Variable zurück zu bekommen(z.B. ein String, unmutable! )
Tips?
HL
danke dir, wirklich Prima! so brauche ich doch nicht mehr Makro

Ein Mangel noch, wenn ich Klasse verwende, gibt es kein Problem, aber ich habe nur ungebundene Funktionen und hasse globale Variablen!
Wie kann ich ohne return (eine Tuple) verwenden, die geänderte Variable zurück zu bekommen(z.B. ein String, unmutable! )
Tips?
HL
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hihi, willkommen im Club, ich mag globale Variablen auch nichtAnonymous hat geschrieben:Ein Mangel noch, wenn ich Klasse verwende, gibt es kein Problem, aber ich habe nur ungebundene Funktionen und hasse globale Variablen!

was spricht dagegen aus einem Code wie
Code: Alles auswählen
var = 'OOP'
def pv():
print var
pv()
var = 'Functional'
pv()
Code: Alles auswählen
class App(object):
def __init__(self):
self.var = 'OOP'
def pv(self):
print self.var
a = App()
a.pv()
a.var = 'Functional'
a.pv()
Ich weiß nicht genau was du meinst.. meinst du einen Rückgabewert aus einer Funktion zu bekommen, ohne sie zu beenden? Das geht nicht direkt, macht auch eher wenig sinn, jedoch kannst du das Schlüsselwort yield benutzen, mit dem du die Funktion 'pausierst', Werte zurückgibst und dann an der gleichen Stelle fortsetzt. Wenn es das ist was du suchst, dann solltest du bei einer Recherche nach Generatoren fündig werden.Anonymous hat geschrieben:Wie kann ich ohne return (eine Tuple) verwenden, die geänderte Variable zurück zu bekommen(z.B. ein String, unmutable! )
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast:
>>Wie kann ich ohne return (eine Tuple) verwenden, die geänderte Variable zurück zu bekommen(z.B. ein String, unmutable! ) <<
Meinst Du so etwas wie "call-by-reference" in C, also beispielsweise ??
Das geht wohl, wenn man in Python die Argumente in Form einer Liste (mutable) übergibt:
-- nun ist M gleich "hallo", also wurde das Erebnis von f im
Argument M zurückgegeben (ohne return zu verwenden).
Edit (Loenidas): Code in Tags gesetzt.
>>Wie kann ich ohne return (eine Tuple) verwenden, die geänderte Variable zurück zu bekommen(z.B. ein String, unmutable! ) <<
Meinst Du so etwas wie "call-by-reference" in C, also beispielsweise
Code: Alles auswählen
f(char* s, int* n){*n = 3; *s = '\0'; }
Das geht wohl, wenn man in Python die Argumente in Form einer Liste (mutable) übergibt:
Code: Alles auswählen
def f(L):
L[0]="hallo"
M=["egal"]
f(M)
Argument M zurückgegeben (ohne return zu verwenden).
Edit (Loenidas): Code in Tags gesetzt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Zu diesem Thema sollte ich unbedingt diesen Link beisteuern:
http://www.python-forum.de/viewtopic.php?t=3210
mfg
Gerold

Zu diesem Thema sollte ich unbedingt diesen Link beisteuern:
http://www.python-forum.de/viewtopic.php?t=3210
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo zusammen!
vielen Dank für die Vorschläge!
Zu Leonidas: ich suche keine Funktionaltiät wie Generator. Vielleicht sollte ich doch Klasse verwenden, deine Funktion hat nicht direkt global aVar verwendet, aber trotzdem unsicher!
zu Tester: Trick zum Element 0 von einer Liste ist ok, aber doch nur ein Misbrauch
Zu gerold: dein Link hat mich die Entscheidung geholfen.
Dank alle!
HL
vielen Dank für die Vorschläge!
Zu Leonidas: ich suche keine Funktionaltiät wie Generator. Vielleicht sollte ich doch Klasse verwenden, deine Funktion hat nicht direkt global aVar verwendet, aber trotzdem unsicher!
zu Tester: Trick zum Element 0 von einer Liste ist ok, aber doch nur ein Misbrauch

Zu gerold: dein Link hat mich die Entscheidung geholfen.
Dank alle!
HL