Methode erstellen in Python

TheWalkingJoke

Lt. Junior Grade
Registriert
Aug. 2014
Beiträge
417
Hallo zusammen.
Wie kann ich in Python ein Methode erstellen, also dass eine bestimmte Befehlabfolge definiert wird und dass man diese immer wieder ausführen kann, aber man nicht die ganze Abfolge immer neu schreiben muss

Beispiel:
Name1
Befehlabfolge:
Befehl1
Befehl2
Befehl3

Jetzt muss ich nur noch Name1 schreiben und Befehl 1-3 werden ausgeführt.

Gibt es sowas bei Python, ich weiß nur dass es sowas auch bei Java gibt.

Kann mir einer sagen wie ich das machen kann am besten mit einem einfachen Beispiel.

Danke schonmal und einen guten Rutsch
MfG
TheWalkingJoke
 
Java:
Code:
public static virtual abstract volatile final protected synchronized const private <T> void funktion(java.util.String xyz) {
  // 100 Zeilen Code
}

Python:
Code:
def funktion(xyz):
  pass  # oder 3 Zeilen Code

Ist doch ganz einfach :freak:
 
Ok danke.
Leider verstehe ich noch nicht ganz wie ich Funktionen anwenden kann.
Ich will dass folgender Code:
Code:
kurz = 0.1

GPIO.output(15, GPIO.HIGH)
time.sleep(kurz)
GPIO.output(13, GPIO.HIGH)
time.sleep(kurz)
GPIO.output(11, GPIO.HIGH)
time.sleep(kurz)
ausgeführt wird. Ich will den Code aber nicht immer schreiben.
Kann mir einer vielleicht sagen wie ich das Programm genau schreiben muss?
Ich habe es so probier:
Code:
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)

kurz = 0.1

def anfang(xyz):
        pass
                GPIO.output(15, GPIO.HIGH)
                time.sleep(kurz)
                GPIO.output(13, GPIO.HIGH)
                time.sleep(kurz)
                GPIO.output(11, GPIO.HIGH)
                time.sleep(kurz)


while True:
        try:
                GPIO.anfang()

                GPIO.output(15, GPIO.LOW)
                time.sleep(kurz)
                GPIO.output(13, GPIO.LOW)
                time.sleep(kurz)
                GPIO.output(11, GPIO.LOW)
                time.sleep(kurz)

        except KeyboardInterrupt:
                GPIO.cleanup()
es hat aber nicht funktioniert.
Am besten wäre es, wenn der 2. Teil also das GPIO 11, 13 und 15 ausgeschaltet werden auch in eine Funktion kommt.
Ich hoffe, dass ich es möglichst verständnisvoll beschrieben habe.

Frohes Neues und danke nochmal
TheWalkingJoke
 
Mit funktionen gruppiert man Befehle die sonst jeweils eine Zeile brauchen.
ANSTATT also mehremals das selbe schreiben, nutzt man die Funktion.
Du hast eine Funktion anfang angelegt aber verwendest sie dann nie - also passiert auch nicht das, was in der Funktion steht.

Wenn du programmieren (lernen) willst musst du unbedingt lernen zu googlen... selbst "python funktion" bei google liefert sofort 100 sehr einfache Beispiele...
Auch wenn dir hier jemand die Lösung postet wirst du mittelfristig nicht weit kommen, wenn du Dinge fragen musst, die man sich selbst schneller per google beantwortet als du diesen Beitrag oben geschrieben hast.
Permanentes Googlen (nachlesen der Doku) ist selbstverständlich bei Programmieren und macht man auch noch, wenn man es schon kann. Niemand behält sowas alles im Kopf...
 
Ein gut gemeinter Rat: Such dir ein vernünftiges Programmiertutorial und geh damit Schritt für Schritt die Grundlagen durch, dann werden sich deine Probleme zügig in Luft auflösen :).
GPIO und Python klingt nach RaspberryPi, gerade in dem Bereich gibt es doch eine große und vor allem auch aktive Community, die schon zahlreiche Anleitungen verfasst hat. Je nach eigener Vorliebe online oder in Buchform.

Die Funktion, die du geschrieben hast, hast du zu sehr von VikingGes Beispiel abgeschaut. Das war, wie schon gesagt, nur ein Beispiel. Lies nach, wofür das xyz in der Funktionsklammer steht (Stichwort: Funktionsparameter) und überlege dir, wie das bei deiner Funktion aussehen würde.
Beschäftige dich außerdem mal damit, was das 'pass' macht, und ob du das wirklich in der ersten Zeile der Funktion stehen haben möchtest.
Zu guter letzt: kuddlmuddl sagt korrekt, dass du die Funktion nie aufrufst. Versuch zu verstehen, warum die Zeile "GPIO.anfang()" nicht das macht, was du erwartest und du kommst deinem Problem sicher schon ein großes Stück näher. Lerne die Fehlermeldungen deines Pythoninterpreters zu verstehen, der wird dir das ein oder andere Problem an deinem Code sicher deutlich ankreiden.
 
Nein, in java gibts nur final, welches aber nicht die selbe Bedeutung hat wie man es von const erwartet/kennt.
 
Uff. Da hier anscheinend keine wirkliche Programmiererfahrung vorhanden ist, würde ich auch erstmal vorschlagen, ganz in Ruhe ein Python-Tutorial durchzuarbeiten - das hier zum Beispiel, wenn jemand was anfängertauglicheres kennt, immer mal her damit.

Miuwa schrieb:
@VikingGe: Hat Java inzwischen const?
Glaube nicht, aber reserviert ist das Wort seit Ewigkeiten. :freak:
 
@thecain: Ich hatte mich gewundert, weil es im Codebeispiel von VikingGe aufgetaucht ist (auch wenn das natürlich ironisch gemeint war). Da ich schon länger nichtmehr Java programmiert habe hab ich mich gefragt ob sie es jetzt "plötzlich" doch eingeführt haben.
 
Danke erstmal für die schnellen und vielen Antworten.
Ja ich programmiere noch nicht sehr lange, würde es aber gerne lernen.
Und ja ich habe einen Raspberry Pi.
Falls jemand eine Tutorial Reihe zum Thema Python kennt, dann bitte melden ;)
Ich werde mal bei Google gucken ob ich was zum Thema Funktionen finde, nur leider wusste ich vorher nicht wie das überhaupt heißt und ich dachte, dass man mir im Forum helfen kann...
 
thecain schrieb:
Nein, in java gibts nur final, welches aber nicht die selbe Bedeutung hat wie man es von const erwartet/kennt.

Auf den ersten Blick nicht, auf den zweiten schon. Wenn in Java eine Variable eine Referenz ist (was sie für alle Referenztypen und damit für einen Großteil aller Typen ist), und die Referenz grob einem Pointer in C++ entspricht, dann ist eine final Variable eben ein const Pointer.

final und const machen genau das selbe. Sie schützen das, was zugewiesen wurde. Nur sind das in Java (wie in vielen anderen Sprachen auch) eben immer Referenzen auf Objekte und nicht die Objekte selbst, aber da kann final ja nichts dafür.
 
Zuletzt bearbeitet:
thecain schrieb:
@Topic
http://learnpythonthehardway.org/book/

Ich bin zugegebener Massen in C und C++ nicht so versiert, aber ich war der Meinung das const Referenzen/Pointer nicht verwendet werden können um Objekte zu verändern. In Java geht das, aber ich kann mich auch irren.

Meinem Verständnis nach (bin in C++ selbst nicht wirklich versiert) ist es ein Unterschied, ob du ein const pointer oder aber ein pointer auf einen const Wert hast (weitere Variante: const pointer auf const Wert). Mit einem const pointer kannst du natürlich auch das Objekt verändern, auf das gezeigt wird, solange dieses nicht const ist.
 
eine mögliche variante:

Code:
import RPi.GPIO as GPIO
import time

gpioList = [15, 13, 11]
kurz     = 0.1

GPIO.setmode(GPIO.BOARD)

for gpio in gpioList:
    GPIO.setup(gpio, GPIO.OUT)

def setGpio(delay, gpioList, state):
    for gpio in gpioList:
        GPIO.output(gpio, state)
        time.sleep(delay)

while True:
    try:
        setGpio(kurz, gpioList, GPIO.HIGH)
        setGpio(kurz, gpioList, GPIO.LOW)

    except KeyboardInterrupt:
        GPIO.cleanup()
 
0x8100 schrieb:
eine mögliche variante:

Code:
import RPi.GPIO as GPIO
import time

gpioList = [15, 13, 11]
kurz     = 0.1

GPIO.setmode(GPIO.BOARD)

for gpio in gpioList:
    GPIO.setup(gpio, GPIO.OUT)

def setGpio(delay, gpioList, state):
    for gpio in gpioList:
        GPIO.output(gpio, state)
        time.sleep(delay)

while True:
    try:
        setGpio(kurz, gpioList, GPIO.HIGH)
        setGpio(kurz, gpioList, GPIO.LOW)

    except KeyboardInterrupt:
        GPIO.cleanup()

Super, funktioniert.
Danke
 
Zurück
Oben