PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XMMS Control in Python



phnord
31-01-2005, 00:37
Holla!

Ich versuch schon seit geraumer Zeit Python etwas näher kennen zu lernen. Habe jetzt zum ersten Mal ein Skript geschrieben, das meiner Meinung nach soweit ganz gut funktioniert. Natürlich hat es ein paar Macken und hier und da kann man sicher noch einige Optimierungen vornehmen. Und da kommt ihr ins Spiel. Was haltet ihr von dem bisherigen Programmcode? Speziell interressiert mich da auch die Strukturierung, Verwendung von Variablen, etc.
Was mich auch noch interressieren würde ist, nach welcher Methode ihr euren Programmen eine höhere Versionsnummer spendiert.

Das Skript hat einige Funktionen zur Steuerung von XMMS über die Konsole. Eine eingebaute Suchfunktion für die Playlist ist auch schon da, wobei das Ergebnis der Suche nicht immer Erfolgreich ist :rolleyes:. Demnach braucht ihr das XMMS Python Modul und natürlich XMMS selber.

Her mit euren Meinungen :)

mfg
phnord

RapidMax
01-02-2005, 20:07
Zuerst zu den Geschmacksachen: Ich habe nicht gerne GROSSGESCHRIEBENE Variablen. So geschriebene Namen sind für mich Konstanten (was inbesondere bei Python wichtig zu unterscheiden ist, da es keine Konstanten im Sinne von nicht veränderbar gibt). Dann schreibe ich normalerweise auch Programme, die über ein kleines script hinausgehen so, dass sie als Module einzusetzen sind. Dafür bediene ich mich folgender Grundstruktur:

def main():
print "Main Routine, nur dann abgearbeitet, wenn als Programm ausgeführt"

if __name__ == '__main__':
main()

So nun noch ein paar Tips:

Als nichts verwendet man normalerweise None und nicht 0 weil 0 ist eine Zahl und None ist nichts (auch wenn es ein Objekt ist...).


Die Benutzereingaben könnte man auch so lösen:

def menu():
user_choice = raw_input("choose:")
{ '0' : player_resource.play,
'1' : player_resource.stop,
'2' : player_resource.pause,
........
'10' : MenuPrint("Bye, Bye") }[user_choice]()


Was dir noch fehlt ist "MenuPrint":

class MenuPrint(object):
def __init__(self, txt): self.txt = txt
def __call__(self): print self.txt

Lange Strings wie am Anfang sind mit print auf jeder Zeile etwas mühsam. Ich verwende lieber print """
langer String
über mehrere Zeilen"""

Dokumentier den Quelltext besser. Zumindest sollte ein kleiner, eingebetteter Python-Doc-String die Funktion erklären:


def do_nothing():
""" Diese Funktion tut wirklich nichts, aber das sehr gut! """
pass

>>> help(do_nothing)
Help on function do_nothing in module __main__:

do_nothing()
Diese Funktion tut wirklich nichts, aber das sehr gut!


Gruss, Andy