Python/de: Difference between revisions

From FreeCAD Documentation
(Created page with "* Argumente mit Schlüsselwert Paaren sind optional, wobei der Standardwert in der Signatur angegeben ist. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind:")
No edit summary
 
(27 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{VeryImportantMessage|(January 2020) FreeCAD wurde ursprünglich für die Arbeit mit Python 2 entwickelt. Da Python 2 im Jahr 2020 das Ende seiner Lebensdauer erreicht hat, wird die zukünftige Entwicklung von FreeCAD ausschließlich mit Python 3 durchgeführt, und die Abwärtskompatibilität wird nicht unterstützt.}}
{{VeryImportantMessage|FreeCAD wurde ursprünglich für die Arbeit mit Python 2.x entwickelt. Diese Reihe endete mit der Ausgabe 2.7.18 vom 20. April 2020 und wird gefolgt von Python 3. Die zukünftige Entwicklung von FreeCAD ausschließlich mit Python 3 durchgeführt, und die Abwärtskompatibilität wird nicht unterstützt.}}


== Beschreibung ==
== Beschreibung ==

{{TOCright}}


[https://www.python.org Python] ist eine allgemeine, hochrangige Programmiersprache, die in großen Anwendungen sehr häufig verwendet wird, um einige Aufgaben zu automatisieren, indem man Skripte erstellt oder [[macros/de|Makros]].
[https://www.python.org Python] ist eine allgemeine, hochrangige Programmiersprache, die in großen Anwendungen sehr häufig verwendet wird, um einige Aufgaben zu automatisieren, indem man Skripte erstellt oder [[macros/de|Makros]].


In FreeCAD kann Python-Code verwendet werden, um verschiedene Elemente programmgesteuert zu erstellen, ohne auf die grafische Benutzeroberfläche klicken zu müssen. Darüber hinaus sind viele Werkzeuge und Arbeitsbereiche von FreeCAD in Python programmiert.
In FreeCAD kann Python Code verwendet werden, um verschiedene Elemente programmgesteuert zu erstellen, ohne auf die grafische Benutzeroberfläche klicken zu müssen. Darüber hinaus sind viele Werkzeuge und Arbeitsbereiche von FreeCAD in Python programmiert.


Siehe [[Introduction to Python/de||Einführung in Python]], um mehr über die Programmiersprache Python zu erfahren, und dann [[Python scripting tutorial|Python Skript Tutorien]] und [[FreeCAD Scripting Basics|FreeCAD Skriptgrundlagen]], um das Skripting in FreeCAD zu starten.
Siehe [[Introduction to Python/de||Einführung in Python]], um mehr über die Programmiersprache Python zu erfahren, und dann [[Python scripting tutorial|Python Skript Tutorien]] und [[FreeCAD Scripting Basics|FreeCAD Skriptgrundlagen]], um das Skripting in FreeCAD zu starten.


== Lesbarkeit ==
Beim Schreiben von Python-Code ist es ratsam,[https://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code] zu beachten.

Die Lesbarkeit von Python Code ist einer der wichtigsten Aspekte dieser Sprache. Die Verwendung eines klaren und konsistenten Stils innerhalb der Python Gemeinschaft erleichtert Beiträge von verschiedenen Entwicklern, da die meisten erfahrenen Python Programmierer erwarten, dass der Code auf eine bestimmte Art und Weise formatiert ist und bestimmten Regeln folgt. Beim Schreiben von Python Code ist es ratsam, [https://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code] und [https://www.python.org/dev/peps/pep-0257/ PEP257: Docstring Conventions] zu befolgen.

Diese Dokumente bieten Erklärungen in einer benutzerfreundlicheren Form:
* [https://realpython.com/python-pep8/ Wie man schönen Python Code mit PEP 8 schreibt]
* [https://realpython.com/documenting-python-code/ Python Code dokumentieren: Ein vollständiger Leitfaden].


== Konventionen ==
== Konventionen ==
In dieser Dokumentation sollten einige Konventionen für Python-Beispiele eingehalten werden.
In dieser Dokumentation sollten einige Konventionen für Python Beispiele eingehalten werden.


Dies ist eine typische Funktionssignatur
Dies ist eine typische Funktionssignatur


{{Code|code=
{{Code|code=
Wire = makeWire(pointslist, closed=False, placement=None, face=None, support=None)
Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None)
}}
}}


Line 24: Line 32:


{{Code|code=
{{Code|code=
Wire = makeWire(pointslist, False, None, None, None)
Wire = make_wire(pointslist, False, None, None, None)
Wire = makeWire(pointslist, False, None, None)
Wire = make_wire(pointslist, False, None, None)
Wire = makeWire(pointslist, False, None)
Wire = make_wire(pointslist, False, None)
Wire = makeWire(pointslist, False)
Wire = make_wire(pointslist, False)
Wire = makeWire(pointslist)
Wire = make_wire(pointslist)
}}
}}


: In diesem Beispiel hat das erste Argument keinen Standardwert, daher sollte es immer einbezogen werden.
: In this example the first argument doesn't have a default value so it should always be included.


* Wenn die Argumente mit dem expliziten Schlüssel angegeben werden, können die optionalen Argumente in beliebiger Reihenfolge angegeben werden. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind:
* When the arguments are given with the explicit key, the optional arguments can be given in any order. This means that the following calls are equivalent:
{{Code|code=
{{Code|code=
Wire = makeWire(pointslist, closed=False, placement=None, face=None)
Wire = make_wire(pointslist, closed=False, placement=None, face=None)
Wire = makeWire(pointslist, closed=False, face=None, placement=None)
Wire = make_wire(pointslist, closed=False, face=None, placement=None)
Wire = makeWire(pointslist, placement=None, closed=False, face=None)
Wire = make_wire(pointslist, placement=None, closed=False, face=None)
Wire = makeWire(pointslist, support=None, closed=False, placement=None, face=None)
Wire = make_wire(pointslist, support=None, closed=False, placement=None, face=None)
}}
}}


* Pythons Richtlinien betonen die Lesbarkeit von Code; insbesondere sollten Klammern unmittelbar auf den Funktionsnamen folgen, und ein Leerzeichen sollte einem Komma folgen.
* Python's guidelines stress readability of code; in particular, parentheses should immediately follow the function name, and a space should follow a comma.


{{Code|code=
{{Code|code=
Line 47: Line 55:
p2 = Vector(1, 1, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
p3 = Vector(2, 0, 0)
Wire = makeWire([p1, p2, p3], closed=True)
Wire = make_wire([p1, p2, p3], closed=True)
}}
}}


* Wenn Code über mehrere Zeilen gebrochen werden muss, sollte dies mit einem Komma in Klammern oder Klammern erfolgen; die zweite Zeile sollte mit der vorherigen übereinstimmen.
* If code needs to be broken over several lines, this should be done at a comma inside brackets or parentheses; the second line should be aligned with the previous one.


{{Code|code=
{{Code|code=
Line 56: Line 64:
2, 4, 5]
2, 4, 5]


Wire = makeWire(pointslist,
Wire = make_wire(pointslist,
False, None,
False, None,
None, None)
None, None)
}}
}}


* Funktionen können ein Objekt zurückgeben, das als Basis für eine andere Zeichenfunktion verwendet werden kann.
* Functions may return an object that can be used as the base of another drawing function.
{{Code|code=
{{Code|code=
Wire = makeWire(pointslist, closed=True, face=True)
Wire = make_wire(pointslist, closed=True, face=True)
Window = makeWindow(Wire, name="Big window")
Window = make_window(Wire, name="Big window")
}}
}}


== Imports ==
== Importe ==


Python functions are stored in files called modules. Before using any function in that module, the module must be included in the document with the {{incode|import}} instruction.
Python Funktionen werden in Dateien gespeichert, die Module genannt werden. Bevor eine Funktion in diesem Modul verwendet wird, muss das Modul mit dem Befehl {{incode|import}} in das Dokument aufgenommen werden.


This creates prefixed functions, that is, {{incode|module.function()}}. This system prevents name clashes with functions that are named the same but that come from different modules.
Dies erzeugt vorangestellte Funktionen, d.h. {{incode|module.function()}}. Dieses System verhindert Namenskonflikte mit Funktionen, die zwar den gleichen Namen tragen, aber aus verschiedenen Modulen stammen.
For example, the two functions {{incode|Arch.makeWindow()}} and {{incode|myModule.makeWindow()}} may coexist without problem.
Beispielsweise können die beiden Funktionen {{incode|Arch.make_window()}} und {{incode|myModule.make_window()}} problemlos nebeneinander existieren.


Vollständige Beispiele sollten die notwendigen Importe und die vorangestellten Funktionen beinhalten.
Full examples should include the necessary imports and the prefixed functions.


{{Code|code=
{{Code|code=
import FreeCAD, Draft
import FreeCAD as App
import Draft


p1 = FreeCAD.Vector(0, 0, 0)
p1 = App.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1, 1, 0)
p2 = App.Vector(1, 1, 0)
p3 = FreeCAD.Vector(2, 0, 0)
p3 = App.Vector(2, 0, 0)
Wire = Draft.makeWire([p1, p2, p3], closed=True)
Wire = Draft.make_wire([p1, p2, p3], closed=True)
}}
}}


{{Code|code=
{{Code|code=
import FreeCAD, Draft, Arch
import FreeCAD as App
import Draft
import Arch


p1 = FreeCAD.Vector(0, 0, 0)
p1 = App.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1, 0, 0)
p2 = App.Vector(1, 0, 0)
p3 = FreeCAD.Vector(1, 1, 0)
p3 = App.Vector(1, 1, 0)
p4 = FreeCAD.Vector(0, 2, 0)
p4 = App.Vector(0, 2, 0)
pointslist = [p1, p2, p3, p4]
pointslist = [p1, p2, p3, p4]


Wire = Draft.makeWire(pointslist, closed=True, face=True)
Wire = Draft.make_wire(pointslist, closed=True, face=True)
Structure = Arch.makeStructure(Wire, name="Big pillar")
Structure = Arch.make_structure(Wire, name="Big pillar")
}}
}}


{{Powerdocnavi{{#translation:}}}}
[[Category:API Documentation]]
[[Category:Developer Documentation]]
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Poweruser Documentation]]
[[Category:API{{#translation:}}]]
[[Category:User Documentation]]
[[Category:Python Code{{#translation:}}]]
[[Category:Glossary{{#translation:}}]]

Latest revision as of 10:13, 17 October 2021

FreeCAD wurde ursprünglich für die Arbeit mit Python 2.x entwickelt. Diese Reihe endete mit der Ausgabe 2.7.18 vom 20. April 2020 und wird gefolgt von Python 3. Die zukünftige Entwicklung von FreeCAD ausschließlich mit Python 3 durchgeführt, und die Abwärtskompatibilität wird nicht unterstützt.

Beschreibung

Python ist eine allgemeine, hochrangige Programmiersprache, die in großen Anwendungen sehr häufig verwendet wird, um einige Aufgaben zu automatisieren, indem man Skripte erstellt oder Makros.

In FreeCAD kann Python Code verwendet werden, um verschiedene Elemente programmgesteuert zu erstellen, ohne auf die grafische Benutzeroberfläche klicken zu müssen. Darüber hinaus sind viele Werkzeuge und Arbeitsbereiche von FreeCAD in Python programmiert.

Siehe |Einführung in Python, um mehr über die Programmiersprache Python zu erfahren, und dann Python Skript Tutorien und FreeCAD Skriptgrundlagen, um das Skripting in FreeCAD zu starten.

Lesbarkeit

Die Lesbarkeit von Python Code ist einer der wichtigsten Aspekte dieser Sprache. Die Verwendung eines klaren und konsistenten Stils innerhalb der Python Gemeinschaft erleichtert Beiträge von verschiedenen Entwicklern, da die meisten erfahrenen Python Programmierer erwarten, dass der Code auf eine bestimmte Art und Weise formatiert ist und bestimmten Regeln folgt. Beim Schreiben von Python Code ist es ratsam, PEP8: Style Guide for Python Code und PEP257: Docstring Conventions zu befolgen.

Diese Dokumente bieten Erklärungen in einer benutzerfreundlicheren Form:

Konventionen

In dieser Dokumentation sollten einige Konventionen für Python Beispiele eingehalten werden.

Dies ist eine typische Funktionssignatur

Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None)
  • Argumente mit Schlüsselwert Paaren sind optional, wobei der Standardwert in der Signatur angegeben ist. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind:
Wire = make_wire(pointslist, False, None, None, None)
Wire = make_wire(pointslist, False, None, None)
Wire = make_wire(pointslist, False, None)
Wire = make_wire(pointslist, False)
Wire = make_wire(pointslist)
In diesem Beispiel hat das erste Argument keinen Standardwert, daher sollte es immer einbezogen werden.
  • Wenn die Argumente mit dem expliziten Schlüssel angegeben werden, können die optionalen Argumente in beliebiger Reihenfolge angegeben werden. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind:
Wire = make_wire(pointslist, closed=False, placement=None, face=None)
Wire = make_wire(pointslist, closed=False, face=None, placement=None)
Wire = make_wire(pointslist, placement=None, closed=False, face=None)
Wire = make_wire(pointslist, support=None, closed=False, placement=None, face=None)
  • Pythons Richtlinien betonen die Lesbarkeit von Code; insbesondere sollten Klammern unmittelbar auf den Funktionsnamen folgen, und ein Leerzeichen sollte einem Komma folgen.
p1 = Vector(0, 0, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
Wire = make_wire([p1, p2, p3], closed=True)
  • Wenn Code über mehrere Zeilen gebrochen werden muss, sollte dies mit einem Komma in Klammern oder Klammern erfolgen; die zweite Zeile sollte mit der vorherigen übereinstimmen.
a_list = [1, 2, 3,
          2, 4, 5]

Wire = make_wire(pointslist,
                False, None,
                None, None)
  • Funktionen können ein Objekt zurückgeben, das als Basis für eine andere Zeichenfunktion verwendet werden kann.
Wire = make_wire(pointslist, closed=True, face=True)
Window = make_window(Wire, name="Big window")

Importe

Python Funktionen werden in Dateien gespeichert, die Module genannt werden. Bevor eine Funktion in diesem Modul verwendet wird, muss das Modul mit dem Befehl import in das Dokument aufgenommen werden.

Dies erzeugt vorangestellte Funktionen, d.h. module.function(). Dieses System verhindert Namenskonflikte mit Funktionen, die zwar den gleichen Namen tragen, aber aus verschiedenen Modulen stammen. Beispielsweise können die beiden Funktionen Arch.make_window() und myModule.make_window() problemlos nebeneinander existieren.

Vollständige Beispiele sollten die notwendigen Importe und die vorangestellten Funktionen beinhalten.

import FreeCAD as App
import Draft

p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1, 1, 0)
p3 = App.Vector(2, 0, 0)
Wire = Draft.make_wire([p1, p2, p3], closed=True)
import FreeCAD as App
import Draft
import Arch

p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1, 0, 0)
p3 = App.Vector(1, 1, 0)
p4 = App.Vector(0, 2, 0)
pointslist = [p1, p2, p3, p4]

Wire = Draft.make_wire(pointslist, closed=True, face=True)
Structure = Arch.make_structure(Wire, name="Big pillar")