Einführung in Python

From FreeCAD Documentation
Revision as of 19:13, 30 May 2014 by Renatorivo (talk | contribs) (N)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Dies ist eine kurze Anleitung für alle, die jetzt zum erstenmal von Python hören. Python ist eine Open-Source-, Multiplattform-Programmiersprache. Python hat viele Funktionen, womit es sich ganz anders als die anderen gängigen Programmiersprachen darstellt, und ist dadurch auch sehr leicht von neuen Benutzern, wie Sie selbst, erlernbar:

  • Es wurde speziell so erstellt, dass Menschen es einfach lesen können, und so ist es sehr einfach zu erlernen und zu verstehen.
  • Es wird direkt interpretiert, das heißt, im Gegensatz zu kompilierten Sprachen wie C, muss Ihr Programm nicht kompiliert werden, bevor sie es ausgeführen können. Der Code, den Sie schreiben kann sofort ausgeführt werden, Zeile für Zeile, wenn Sie so wollen. Das macht es äußerst leicht, zu lernen und Fehler in Ihrem Code zu finden, weil Sie langsam fortschreiten, praktisch Schritt-für-Schritt.
  • Es kann in anderen Programmen eingebettet werden, m es darin so als Script-Sprache zu verwenden. FreeCAD verfügt über einen integrierten Python-Interpreter, so können Sie Python-Code in FreeCAD schreiben, der Teile von und in FreeCad manipulieren kann, so lassen sich zum Beispiel Geometriene erzeugen. Dies ist äußerst Leistungsfähig, weil anstatt nur auf einen Knopf mit der Aufschrift "erstellen Sphäre" zu Klicken, den der Programmierer dort für Sie hingezaubert hat, haben Sie die Freiheit, leicht Ihr eigenes Werkzeug zu schaffen, um genau die Geometrie zu schaffen, die Sie wollen.
  • Es ist erweiterbar, können Sie ganz einfach neue Module in Ihrer Python-Installation einfügen und seine Funktionalität erweitern. Zum Beispiel haben Sie Module, die Python das Lesen und Schreiben jpg Bildern ermöglicht, mit twitter zu kommunizieren, Aufgaben zu planen, durch Ihr Betriebssystem durchgeführt, usw.

Also, die Hände ran! Seien Sie sich bewusst, dass als nächstes eine sehr einfache Einführung auf Sie zukommt, keineswegs ein komplettes Tutorial. Aber meine Hoffnung ist, dass Sie genügend Grundlagen erhalten, um anschliessend die FreeCAD Mechanismen tiefer zu forschen.

Der Interpreter

In der Regel beim Schreiben von Computerprogrammen, öffnen Sie einfach einen Text-Editor oder Ihre bevorzugte Programmierumgebung, was in den meisten Fällen ein Texteditor mit mehreren Werkzeugen darin ist, Sie schreiben IhrProgramm, dann kompilieren Sie und führen es aus. Meistens werden Sie Fehler beim Schreiben des Programms machen, so dass Ihr Programm nicht funktioniert, und Sie erhalten eine Fehlermeldung, was schief gelaufen ist. Dann kehren Sie zu Ihrem Text-Editor zurück, korrigieren die Fehler, starten erneut und so weiter bis Ihr Programm fehlerfrei arbeitet.

In Python kann dieser ganze Prozess transparent im Python-Interpreter ausgeführt werden. Der Interpreter ist ein Python-Fenster mit einer Eingabeaufforderung, wo Sie einfach Python-Code eintippen können. Wenn Sie Python auf Ihrem Computer installieren (Download von der Python-Websiteherunterladen, wenn Sie es auf Windows-oder Mac benutzen, installieren Sie es von Ihrem Paket-Repository, wenn Sie auf GNU / Linux installieren), werden Sie einen Python-Interpreter in Ihrem Startmenü haben. Aber FreeCAD bietet auch einen Python-Interpreter in seinem unteren Teil:

(Falls bei Ihnen nicht angezeigt, klick auf: Ansicht → Ansichten → Python-Konsole.)

Der Interpreter zeigt die Python-Version, dann ein >>> Symbol, das ist die Eingabeaufforderung, das heißt, hier geben Sie Python-Code ein. Schreiben von Code im Interpreter ist einfach: eine Zeile ist ein Befehl. Wenn Sie die Eingabetaste drücken, wird Ihre Code-Zeile ausgeführt (nachdem sie sofort und unsichtbar kompiliert wurde). Zum Beispiel, versuchen Sie dies zu schreiben:

print "Hallo"

print ist ein spezielles Python-Schlüsselwort, das bedeutet natürlich, etwas auf dem Bildschirm auszugeben. Wenn Sie die Eingabetaste drücken, wird die Operation ausgeführt, und die Nachricht "Hallo" wird gedruckt. Wenn Sie einen Fehler machen, schreiben wir zum Beispiel:

print Hallo

Python meldet nun, daß es nicht weiß, was Hallo ist. Die " Zeichen geben an, dass der Inhalt ein String ist, einfacher gesagt, im Programmier-Jargon, ein Stück Text. Ohne die ", glaubt der Druckbefehl Hallo sei nicht einfach Text, sondern ein spezielles Python-Schlüsselwort. Das Wichtigste ist, Sie werden sofort benachrichtigt, dass Sie einen Fehler gemacht haben. Durch drücken des Pfeil nach oben (oder im FreeCAD-Interpreter, STRG + Pfeil nach oben), können Sie zurück zum letzten Befehl den Sie geschrieben haben und diesen korrigieren.

Der Python-Interpreter hat auch ein eingebautes Hilfssystem. Schreiben Sie mal:

help

oder beispielsweise, sagen wir, wir verstehen nicht, was oben mit unserem Print-hallo-Befehl schief ging , wir wollen also spezifische Informationen über den Befehl "print" :

help("print")

Jetzt erhalten Sie eine lange und vollständige Beschreibung dessen, was der Befehl print alles tun kann.

Und da wir jetzt völlig unseren Interpreter beherrschen, können wir mit dem ernsten Zeug beginnen.


Variablen

Natürlich ist die Ausgabe von "Hallo" nicht sehr interessant. Interessanter ist die Ausgabe von Dingen, die Sie vorher nicht wissen, oder die Python für Sie herausfindet. Das ist, wo das Konzept der Variablen ins Spiel kommt. Eine Variable ist einfach ein Wert, den Sie unter einem Namen speichern. Tippen Sie zum Beispiel, das:

a = "Hallo"
print a

Ich vermute, Sie verstehen, was passiert ist, wir spwichern die Zeichenfolge "Hallo" unter dem Namen a. Jetzt ist a kein unbekannter Name mehr! Wir können es überall einsetzen, z. B. in den print-Befehl. Wir können jeden beliebigen Namen verwenden den wir wollen, es gibt nur einige einfache Regeln zu respektieren, wie keine mit Leerzeichen oder Satzzeichen zu verwenden. Zum Beispiel könnten wir sehr wohl schreiben:

hello = "Meine Version von Hallo"
print hello

Gesehen? Jetzt ist hello kein undefiniertes Wort mehr. Was ist, wenn unglücklicherweise einen Namen wählen, der bereits in Python existiert? Sagen wir, wir wollen unsere String unter dem Namen "print" zu speichern:

print = "hello"

Python ist sehr intelligent und wird uns sagen, dass dies nicht möglich ist. Es hat einige "reservierte" Schlüsselwörter, die nicht modifiziert werden können. Aber unsere eigenen Variablen können jederzeit geändert werden, das ist genau, warum sie Variablen genannt werden, weil sich die Inhalt ändern. Zum Beispiel:

myVariable = "hello"
print myVariable
myVariable = "good bye"
print myVariable

Wir änderten den Wert von myVariable. Wir können auch Variablen kopieren:

var1 = "hello"
var2 = var1
print var2 

Beachten Sie, dass es interessant ist, Variablen gute Namen zu geben, da, wenn Sie lange Programme schreiben, Sie sich nach einer Weile nicht daran erinnern werden, wofür Ihre Variable mit dem Namen "a" steht. Aber wenn Sie es, zum Beispiel, myWelcomeMessage nannten, werden Sie sich leicht erinnern, wofür sie verwendet wird, wenn Sie es sehen werden.

Zahlen

Natürlich müssen Sie wissen, dass die Programmierung nützlich ist, jede ganze Art von Daten zu behandeln, und besonders Zahlen, nicht nur Text-strings. Eines ist wichtig, Python muss wissen, mit welchen Daten es sich befasst. Wir sahen in unserem Druck hallo Beispiel, dass der Druckbefehl unseren "hallo" String anerkannte. Und zwar, mit dem " sagten wir speziell dem Druckbefehl, was als Nächstes kommen würde, ist ein Text-String.

Wir können immer überprüfen, welchen Datentyps der Inhalt einer Variablen ist, mit dem speziellen Python Schlüsselwort: type

myVar = "hello"
type(myVar)

Es wird uns sagen, der Inhalt von myVar ist 'str', oder String in Python Jargon. Wir haben auch andere Arten von Daten, wie Integer und Fließkomma-Zahlen:

firstNumber = 10
secondNumber = 20
print firstNumber + secondNumber
type(firstNumber)

Dies ist bereits viel interessanter, nicht wahr? Jetzt haben wir bereits einen leistungsfähigen Rechner! Schauen Sie genau hin, wie es funktioniert, Python weiß, die 10 und 20 sind ganze Zahlen . So werden sie als "int" gespeichert, und Python kann mit ihnen alles tun, was es mit ganzen Zahlen machen kann. Schauen Sie sich dies Ergebniss an:

firstNumber = "10"
secondNumber = "20"
print firstNumber + secondNumber

Gesehen? Wir zwangen Python zu denken, dass unsere zwei Variablen nicht Zahlen, sondern bloße Stücke Text sind. Python kann zwei Stücke Text zusammenfügen, aber es wird nicht versuchen, daraus ein Summe zu bilden. Aber wir sprachen über Ganz-Zahlen. Es gibt auch Fließkomma-Zahlen. Der Unterschied ist, dass Ganz-Zahlen keine Nachkommastellen haben, während Fließkomma-Zahlen auch Dezimalstellen haben können:

var1 = 13
var2 = 15.65
print "var1 is of type ", type(var1)
print "var2 is of type ", type(var2)

Ganz- und Fließkomma-Zahlen können problemlos gemischt werden:

total = var1 + var2
print total
print type(total)

Natürlich hat die Summe Dezimalzahlen, richtig? Dann hat Python automatisch entschieden, dass das Ergebnis ein float(Fließkomma-Zahl) ist. In einigen Fällen wie diesem, entscheidet Python automatisch, welcher Typ anzuwenden ist, um etwas zu zuweisen. In anderen Fällen tut es das nicht. Zum Beispiel:

varA = "hello 123"
varB = 456
print varA + varB

Dies gibt uns einen Fehler, weil varA einen String und varB ein int ist, und Python nicht weiß, was zu tun ist. Aber wir können Python zwingen, zwischen Typen zu konvertieren:

varA = "hello"
varB = 123
print varA + str(varB)

Nun sind beides Strings und der Ablauf funktioniert! Bemerken Sie, dass wir varB zur Zeit des Druckes "stringified" haben, aber wir varB selbst nicht änderten. Wenn wir varB dauerhaft in einen String ändern wollten, würden wir folgendes tun müssen:

varB = str(varB)

Wir können auch int() und float() einsetzen, um Werte zu konvertieren in int und float, wenn wir wollen:

varA = "123"
print int(varA)
print float(varA)

Hinweis auf Python-Kommandos

Sie werden bemerkt haben, dass wir in diesem Abschnitt den Befehl 'print' in mehrfacher Weise verwendet haben. Wir druckten Variablen, Summen, mehrere Dinge durch Kommas getrennt, und auch das Ergebnis anderer Python-Befehle wie type(). Vielleicht haben Sie auch gesehen, dass die Anwendung dieser beiden Befehle:

type(varA)
print type(varA)

absolut das selbe Resultat ergeben. Das ist, weil wir im Interpreter sind, und alles automatisch auf dem Bildschirm ausgegeben wird. Wenn wir kompliziertere Programme schreiben werden, die außerhalb des Interpreters laufen sollen, wird nicht automatisch alles auf dem Schirm ausgegeben, also werden wir den Druckbefehl verwenden müssen. Aber im Moment wollen wir aufhören, es hier zu verwenden, weil es schneller geht. So können wir einfach schreiben:

myVar = "hello friends"
myVar

Sie werden auch gesehen haben, dass die meisten Python-Befehle (oder Schlüsselwörter) die wir bereits kennen, Klammern benötigen, in denen sie den Inhalt, den der Befehl bearbeiten muss, plazieren: type(), int(), str(), etc.

Listen

Ein weiterer interessanter Datentyp sind Listen. Eine Liste ist schlicht eine Liste zusammengestellter Daten. Diese müssen nicht zwangsläufig vom selben Datentyp sein. Genau wie wir einen Text-string durch das benutzen von " " definieren, definieren wir Listen durch [ ]:

myList = [1,2,3]
type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["hello", 345, 34.567]

Sie sehen, es können verschieden Arten von Daten darin enthalten sein. Genau das macht Listen so wertvoll. Man kann dann alle möglichen Dinge mit Listen und deren Inhalten anstellen, wie z.B. diese Zählen:

len(myOtherList)

oder ein einzelnes Element aus der Liste abrufen:

myName = myOtherList[0]
myFriendsName = myOtherList[1]

Wie Sie sehen, wird durch den Befehl len() die gesmte Anzahl von Elementen in einer Liste ausgegeben, deren "Position" in der Liste beginnt mit 0. Das erste Element einer Liste ist immer an Position 0, somit ist in unserer myOtherList, "Bob" an Position 2 zu finden. Darüber hinaus lässt sich noch jede Menge mehr mit Listen anstellen, wie man z.B. hier nachlesen kann, beispielsweise Inhalte sortieren, oder Elemente hinzufügen oder entfernen.

Ein lustiger und interessanter Hinweis für Sie: Ein Text-string hat sehr viel gemeinsam mit einer Liste von Buchstaben! Versuchen Sie das mal:

myvar = "hello"
len(myvar)
myvar[2]

Üblicherweise kann man alles das sich auf Listen anwenden lässt, auch auf Strings anwenden. Denn Tatsächlich sind Listen und Strings eigenlich Sequenzen.

Ausser Strings, Ints, floats und Listen, gibt es noch weitere built-in Daten-typen, wie z.B. Wörterbücher, oder Sie können auch Ihre eigenen Daten-typen erstellen durch verwenden von Klassen.

Einrückung

Cool ist beim Gebrauch von Listen auch, daß man sie durchsuchen und mit jedem Fund etwas tun kann. Schauen Sie zum Beispiel hier:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for dalton in alldaltons:
   print dalton + " Dalton"

Wir iterierten (schon wieder Programmier-Jargon!) durch unsere Liste mittels des "for ... in ..." -Befehls und haben mit jedem der gefundenen Elemente etwas gemacht. Beachten Sie die spezielle Syntax: der for-Befehl endet mit : dies deutet an, das alles was danach kommt, ein Befehlsblock mit einem oder mehreren Befehlen sein wird. Unmittelbar nachdem Sie in der Befehlszeile etwas mit der Endung eingeben:, wird die Eingabeaufforderung sich so verändern ...;was bedeutet, Python weiß, dass eine :-beendete Eingabe aufgetreten ist und dass das, was als nächstes kommen wird Teil davon ist.

Wie wird Python wissen, wie viele der folgenden Zeilen innerhalb der for...in Operation durchgeführt werden sollen? Dafür verwendet Python die Einrückung. Das heißt, Ihre nächsten Zeilen nicht sofort beginnen. Sie werden sie durch ein Leerzeichen oder mehrere Leerzeichen oder einen Tab oder mehrere Tab´s beginnen. Andere Programmiersprachen andere Methoden, wie z.B. alles in Klammern zu setzen, etc. Solange Sie Ihre folgenden Linien mit derselben Einrückung schreiben, werden sie als ein Teil des for...in Block betrachtet. Wenn Sie eine Zeile mit 2 Leerzeichen und der nächste mit 4 beginnen, gibt es einen Fehler. Wenn Sie fertig sind, schreiben Sie einfach eine Zeile ohne Einrückung, oder drücken Sie einfach ENTER, um den for...in Block zu verlassen.

Einrückung ist cool, wenn Sie die Großen nutzen(z.B. Tabulatoren statt Leerzeichen, weil größer), falls Sie ein großes Programm schreiben, werden Sie eine klare Übersicht haben, was im Inneren von Blöcken ausgeführt wird. Wir werden sehen, dass viele andere Befehle außer for...in ebenfalls eingerückten Code nutzen können.

For-in-Befehle können für viele Dinge, die mehr als einmal getan werden müssen, verwendet werden. Er kann zum Beispiel, mit dem range()-Befehl verbunden werden:

serie = range(1,11)
total = 0
print "sum"
for number in serie:
   print number
   total = total + number
print "----"
print total

Oder komplexere Dinge wie diese:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for n in range(4):
   print alldaltons[n], " is Dalton number ", n

Sie sehen, dass der range()-Befehl auch eine seltsame Eigenart hat, dass er bei 0 beginnt(wenn Sie die Startzahl nicht vorgeben) und dass seine letzte Zahl eins weniger sein wird als die End-Zahl, die Sie angeben. Das heisst natürlich, so arbeitet es gut mit anderen Python-Befehlen zusammen. Zum Beispiel:

alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
for n in range(total):
   print alldaltons[n]

Eine weitere interessante Anwendung von eingerückten Blöcken ist der if-Befehl. If führt einen Code-Block nur aus, wenn eine bestimmte Bedingung erfüllt ist, zum Beispiel:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Joe" in alldaltons:
   print "We found that Dalton!!!"

Natürlich wird das immer den ersten Satz ausgeben, aber versuchen Sie, die zweite Zeile wie folgt zu ersetzen:

if "Lucky" in alldaltons:

Dann wird nichts ausgegeben. Wir können auch eine else: Anweisung nutzen:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Lucky" in alldaltons:
   print "We found that Dalton!!!"
else:
   print "Such Dalton doesn't exist!"

Funktionen

Die Standard Python Befehle sind nicht viele. In der aktuellen Version von Python gibt es etwa 30, und wir kennen bereits mehrere von ihnen. Aber stellen Sie sich vor, ob wir könnten unsere eigenen Befehle erfinden? Nun, wir können, und es ist extrem einfach. In der Tat, tun die meisten der zusätzlichen Module, die Sie in Ihrer Python-Installation zufügen, genau das, sie fügen Befehle hinzu, die Sie verwenden können. Ein benutzerdefinierter Befehl in Python wird eine Funktion genannt und wird so gemacht:

def printsqm(myValue):
   print str(myValue)+" square meters"

printsqm(45)


...noch in Arbeit...

Module

...in Arbeit...

Loslegen mit FreeCAD

Nun, ich glaube, Sie haben jetzt eine gute Vorstellung davon, wie Python funktioniert, und Sie können anfangen zu erforschen, was FreeCAD anzubieten hat. Die Python-Funktionen von FreeCAD werden alle gut in verschiedenen Modulen organisiert. Einige von ihnen werden bereits (importiert) geladen, wenn Sie FreeCAD starten. Also, nur eingeben

dir()

und lesen Sie auf FreeCAD Scripting Grundkenntnisse ...

Natürlich sahen wir hier nur einen sehr kleinen Teil der Python-Welt. Es gibt viele wichtige Vorstellungen, die wir hier nicht erwähnten. Es gibt zwei sehr wichtige Python-Bezugsdokumente im Netz:

Vieleicht wollen Sie ja Lesezeichen dazu anlegen...?



Verfügbare Übersetzungen dieser Seite: Template:Se