Funktionen in Python

Eigentlich kennen wir bereits Funktionen und haben diese auch verwendet. Die Print-Funktion ist -Oh wunder!- eine Funktion genauso wie es auch range ist.
Aber was ist den nun eine Funktion?
Eine Funktion ist allgemein gesagt ein Programmbereich, welcher abgekapselt definiert wird und im Programm selbst dann aufgerufen werden kann. Aber ein Beispiel sollte hier eher helfen:

def machWas():
   print("Ich wurde in der Funktion aufgerufen")

Wir können die Funktion grob in zwei Teile aufteilen. Funktionskopf, sowie Funktionsrumpf oder -körper.
Der Kopf ist die erste Zeile, also das Keyword “def”, welches ankündigt, dass wir nun eine Funktion definieren. Danach steht der Name der Funktion und in runden Klammern geben wir die Parameter an. In unseren Fall also erstmal nichts. Abgeschlossen wird der Kopf mit Doppelpunkten. 

Nun müssen wir genauso wie bei den Schleifen und bei den if-Abfragen den eigentlichen Rumpf also den Inhalt der Funktion, durch Einrücken, kenntlich machen.
In diesen geben wir dann mit der uns bekannten Print-Funktion einen Text aus.

Wenn wir diesen Code jetzt so ausführen, was passiert wohl?
Garnichts! Aber warum? Wir haben die Funktion jetzt erstmals nur definiert, aber noch nicht aufgerufen. Dieser Aufruf sieht in unseren Fall dann so aus:

machWas()

Folglich konnten wir somit den Print-Befehl ausführen und in unserer Konsole steht “ich wurder in der Funktion aufgerufen”.

Mit Parametern:

Die Funktionen die wir bis jetzt kennen lernen durften hatten immer etwas in den Klammern stehen. Können wir das auch? Natürlich:

def rechneMirWasAus(zahl1, zahl2):
   print("das ergebnis ist " + str(zahl1 + zahl2))
rechneMirWasAus(3,5)

Hier definieren wir eine Funktion namens rechneMirWasAus. Vielleicht nicht der gängigste Name, aber das soll uns für das Beispiel nicht stören.

Anders als bei dem Beispiel zuvor sind aber die runden Klammern nicht leer. Wir schreiben hier zwei Parameter rein, also Variabeln welche vom Aufrufer der Funktion definiert werden und wir nachher in der Funktion verwenden wollen. Wir rechnen die beiden Zahlen zusammen und geben das Ergebnis mit Print aus. Da wir die Funktion danach mit den Parametern 3 und 5 aufrufen werden, wird wie erwartet, “das Ergebnis ist 8” ausgegeben.

Mit Return Wert:

Aber was ist wenn ich das Rechenergebnis wirklich ausgegeben haben möchte oder mit diesem dann noch weitere Rechnungen durchführen möchte, ohne das Ergebnis vorher auszugeben? Die Range-Funktion hat uns ja auch was zurückgegeben. Auch das können wir folgendermaßen durchführen:

def rechneMirWasAus(zahl1, zahl2):
   return zahl1 + zahl2

Wir sagen quasi “das was bei rechneMirWasAus mit den parametern 3 und 5 rauskommt, das übergibst du an Print”, sprich gebe es in der Konsole aus.

Mehrere Return Werte:

Da wir mehrere Parameter übergeben können, kommt vielleicht auch die Frage auf, ob wir mehrere return Werte zurückgeben können, und ja können wir!:

def test():
   return 3,5
print(test())

Das Ergebnis sieht vielleicht ein wenig merkwürdig aus. (3,5).Die Funktion gibt uns nun ein Tupel zurück, welches die beiden Return Werte in sich hat. Aber was ein Tupel genau ist und wie man mit diesen arbeiten kann, wird zukünftig noch ein Beitrag folgen =)

Globale Variabeln:

Wir nehmen mal an wir haben folgenden oder ähnlichen Code:

zahl = 10
def funktion():
   zahl = 5
funktion()
print(zahl)

Welchen Wert wird die Variable nach dem Aufruf der Funktion “funktion” haben, 10 oder 5?

Durch das Ausführen des Codes bemerken wir, dass 10 als Ergebnis rauskommt. Das Ändern der Variable innerhalb der Funktion hat also keinen Einfluss. Das liegt daran, dass wir in der Funktion nicht die außerhalb der Funktion definierte Variable der Zahl überschreiben, sondern eine neue Variable mit dem gleichen Namen definieren. Bei der “zahl” in der Funktion reden wir von einer lokalen Variable, die außerhalb der Funktion ist eine globale Variable. Die lokale “zahl” existiert nur solange, wie die Funktion läuft. In dem Moment, wo sie zu Ende ist, gibt es die Variable auch nicht mehr. Die globale Variable hingegen existiert bis zum Ende des Programms. Aber was ist wenn wir nun in der Funktion auf die globale Variable zugreifen wollen? Wenn wir die globale Variable nur lesen wollen, aber nicht verändern, dann können wir das ganz einfach. Der nachfolgende Code funktioniert ohne Problem und gibt einfach die global definierte Zahl aus:

zahl = 10
def funktion():
   holder = zahl
   print(holder)
funktion()

Aber was ist wenn wir nun in der Funktion die Zahl verändern wollen? Dann kommt das Keyword global zum Einsatz:

zahl = 10
def funktion():
   global  zahl
   zahl = 5
funktion()
print(zahl)

Wir sagen am Anfang der Funktion mit dem Keyword “global”, dass wir die globale Variable auch ändern wollen, der Print am Ende gibt somit 5 und nicht 10 aus.

Wie man Funktionen “richtig” schreibt:

  • Funktionen dürfen genauso wie auch Variablen nicht irgendwie heißen. Sie dürfen nicht mit Zahlen anfangen und auch ansonsten gelten die gleichen Regeln wie beim Definieren von Variablen.
  • Außerdem muss die Variable zuerst definiert und erst dann aufgerufen werden, anders herum ergibt es einen Fehler.
  • Zwar ist es möglich auf globale Variablen mit dem Keyword “global” zuzugreifen und zu verändern, aber das sollte eher die Ausnahme sein da andernfalls der Code verwirrend werden kann.
  • Funktionen wie auch Variablen werden häufig in der sogenannten Schreibart camelcase geschrieben. Also werden die Wörter zusammengeschrieben, das erste Wort klein, alle anderen groß. So wird aus “Rechne mir mal aus” → “rechneMirMallAus”. Ich würde nicht sagen, dass man camelcase zwangsläufig schreiben muss. Es ist nur wichtig eine einheitliche Notation zu haben und nicht jede Funktion und Variable in einem anderen Stil zu schreiben

Das wars auch wieder für heute. Du hast nun endlich das Geheimnis hinter Funktionen kennen gelernt und kannst nun eigene definieren und aufrufen!
Vielen dank fürs Lesen und bis zum nächsten Mal.

Python Variablen und Strings

Beim letzten Mal haben wir Python und Pycharm (hoffentlich) erfolgreich installiert.

Zum Testen des ganzen Setup haben wir das wohl einfachste Programm was möglich ist geschrieben, Hallo Welt ! Heute wollen wir uns den dazu geschriebenen Code mal genauer ansehen und gucken was denn Variablen sind.

print(“Hallo Welt")

Bei print handelt es sich um eine sogenannte Funktion, was das genau ist interessiert uns aber vorerst nicht. Aktuell ist es für uns nur wichtig zu wissen dass einer Funktion Parameter übermittelt werden können. In dem Fall unser “Hallo Welt”. Die doppelten Anführungszeichen sagen dabei aus, dass es sich hierbei um einen String handelt. Ein String ist eigentlich nur eine Zeichenkette und wir können hier auch was anderes als Hallo Welt eingeben. Zum Beispiel:

print(“4 + 4 “)

Das Ergebnis ist wie erwartet der String den wir im print angegeben haben.

Lassen wir aber nun die Anführungszeichen weg:

print(4 + 4 )

behandelt Python die Eingabe als eine Rechnung die es ausführt und gibt das Ergebnis dieser aus: 8. Zum Rechnen in Python sag ich aber im nächsten Tutorial noch was.

Kommentare:

Später wenn du größere Programme schreibst kann dein Code eventuell ziemlich verwirrend sein. Vor allem wenn das letzte Mal als du drüber geschaut hast schon ein paar Wochen her ist. Mit Hilfe von Kommentaren kannst du deinen Code kommentieren und dokumentieren:

print(“Hallo Welt “) # ich werde gar nicht ausgeführt !

Kommentare definieren wir mit einer #. Würden wir den Text nicht auskommentieren, würde das Programm abstürzen.

Variablen:

Variablen sollten eigentlich alle noch aus dem Matheunterricht können, aber trotzdem sag ich es nochmal. Variablen sind quasi Platzhalter für Zahlen innerhalb einer Rechnung. Dies stimmt auch in Python, nur das sie in Python Platzhalter oder Behälter für alles sind! Nicht nur Zahlen können in einer Variable gespeichert werden sondern auch Strings (also Zeichenketten). Aber Hier einfach mal Code dazu:

x = 42
print(x)

hallo = “Hallo Welt”
print(hallo)

Simpel und elegant !

In der ersten Anweisung definieren wir eine Variable mit dem Namen x und weisen ihr den Wert 42 zu. Anschließend geben wir sie aus.

Das gleiche machen wir auch mit der Variable hallo, ihr weisen wir nur den Wert “Hallo Welt” zu. Auch hier geben wir sie danach aus. Wie du siehst können wir Variablen in Python alle gleich behandeln, vollkommen egal was ihr Wert ist.

Hinweis am Rande.

Auch wenn Python die inneren Werte einer Variable relativ egal sind, so ist der Name der Variable es nicht unbedingt. Dieser sollte nämlich keine Sonderzeichen oder ü und ä besitzen.

§Ü” = 42 #geht nicht

Mit Zahlen anfangen kann eine Variable auch nicht, mitten drin ist jedoch okay.

7Tage = “Hat die Woche  !“  	#geht nicht
ipv4  = “Das internet Protokoll ! #geht

So das wars dann auch erstmal wieder. Beim nächsten Mal rechnen und spielen wir mit Variablen rum und lassen uns Input vom User geben.

Programmieren lernen, welche Sprache ?

Du willst programmieren lernen? Zu recht! Es macht Spaß, man lernt logisches Denken und die Jobs für Entwickler werden auch nicht weniger.

Aber welche Sprache? Es gibt hunderte die (fast) alle ihre Daseinsberechtigung haben.

Sie alle haben ihre eigene Sicht auf die Dinge und ihren eigenen Style. Allgemein bin ich der Meinung das für eine Anfänger die Sprache selbst nicht so wichtig ist. Wenn du programmieren lernen willst solltest du sowieso mit der Zeit über den Tellerrand hinausschauen und auch mal andere Sprachen ausprobieren.

Beim Programmieren ist es nämlich nicht das entscheidende in welcher Sprache du schreibst. Du wirst kein besserer Programmieren alleine dadurch das du irgendwelche Kommandos auswendig lernst oder in dem du schneller als andere auf die Tasten tipeln kannst. Darum geht es nicht beim Programmieren.

Beim Programmieren geht es um etwas vollkommen anderes, es geht ums verstehen. Um das erkennen und verstehen von zusammenhänge innerhalb eines Systems und um das Logische, strukturierte Lösen von Problemen,

löse erst das Problem und schreibe dann deinen Code !

Gut zu wissen, aber mit dieser Einstellung wird die Frage danach welche Sprache du lernen sollst nicht einfacher oder? Alles klar,  ich mach sie dir einfach, lern Python !

Python der Messias !

Wenn ich dir rate Python zu lernen rede ich natürlich nicht davon das du Parsel lernen sollst und mit schlangen quatscht wie Harry Potter sondern natürlich die Programmiersprache !

Aber warum Python? Abgesehen davon das ich ja eben erklärt habe das es eigentlich nicht so wichtig ist mit welcher Sprache du anfängst sondern nur das du anfängst bittet Python in meinen Augen viele Vorteile.

Python ist höchst aktuell, die Developer base wächst jedes Jahr und es gibt unzählige Einsatzmöglichkeiten. Also egal für was genau du dich interessiert, Python kann fast immer gut benutzt werden und aufgrund der vielen User wirst du mit Sicherheit Hilfe im Internet finden.

-Python wird bei penetration testing zum Schreiben von Hacking tools entwickelt.

-Im Bereich Industrie 4.0 wird es verwendet um microController zu Programmieren und smart homes zu realisieren.

-Es existieren bereits sehr gut ausgebaute tools für die Erstellung von künstlicher Intelligenz und Maschinen learning auf Basis von Python.

Und zu guter letzt ist Python eine einfach zu lernende Sprache mit der man sich einen guten Programmierstil angewöhnt, selbst wenn man später andere Sprachen lernt!

Also mach dir keinen Kopf und fang einfach an,  es erwartet dich die Wunderbare Welt des Programmierens  und Python wird dein Schlüssel und Tor dazu sein !

Hier geht es auch schon gleich zu meinen ersten Turorial, Python richtig installieren.