Python/it: Difference between revisions
(Created page with "In FreeCAD, il codice Python può essere utilizzato per creare vari elementi in modo programmatico, senza la necessità di fare clic sull'interfaccia utente grafica. Inoltre, molti strumenti e ambienti di lavoro di FreeCAD sono programmati in Python.") |
(Created page with "Gli esempi completi dovrebbero includere le importazioni necessarie e le funzioni prefissate.") |
||
(17 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
{{TOCright}} |
{{TOCright}} |
||
[https://www.python.org Python] è un linguaggio di programmazione di alto livello per scopi generali, comunemente utilizzato in applicazioni di grandi dimensioni per automatizzare alcune attività creando script o [[ |
[https://www.python.org Python] è un linguaggio di programmazione di alto livello per scopi generali, comunemente utilizzato in applicazioni di grandi dimensioni per automatizzare alcune attività creando script o [[macros/it|macro]]. |
||
In FreeCAD, il codice Python può essere utilizzato per creare vari elementi in modo programmatico, senza la necessità di fare clic sull'interfaccia utente grafica. Inoltre, molti strumenti e ambienti di lavoro di FreeCAD sono programmati in Python. |
In FreeCAD, il codice Python può essere utilizzato per creare vari elementi in modo programmatico, senza la necessità di fare clic sull'interfaccia utente grafica. Inoltre, molti strumenti e ambienti di lavoro di FreeCAD sono programmati in Python. |
||
Vedere [[Introduction_to_Python/it|Introduzione a Python]] per conoscere il linguaggio di programmazione Python, quindi [[Python_scripting_tutorial/it|Guida agli Script Python]] e [[FreeCAD_Scripting_Basics/it|Script di base per FreeCAD]] per iniziare a creare script in FreeCAD . |
|||
See [[Introduction to Python|Introduction to Python]] to learn about the Python programming language, and then [[Python scripting tutorial|Python scripting tutorial]] and [[FreeCAD Scripting Basics|FreeCAD Scripting Basics]] to start scripting in FreeCAD. |
|||
= |
<span id="Readability"></span> |
||
== Leggibilità == |
|||
La leggibilità del codice Python è uno degli aspetti più importanti di questo linguaggio. L'uso di uno stile chiaro e coerente all'interno della comunità Python facilita i contributi da parte di diversi sviluppatori, poiché i programmatori Python più esperti si aspettano che il codice sia formattato in un certo modo e segua determinate regole. Quando si scrive codice Python, è consigliabile seguire [https://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code] e [https://www.python.org/dev/peps/pep-0257/ PEP257: Docstring Conventions]. |
|||
Questi documenti presentano le spiegazioni in modo più intuitivo: |
|||
These documents present explanations in a more user-friendly way: |
|||
* [https://realpython.com/python-pep8/ How to Write Beautiful Python Code With PEP 8] |
* [https://realpython.com/python-pep8/ How to Write Beautiful Python Code With PEP 8] |
||
* [https://realpython.com/documenting-python-code/ Documenting Python Code: A Complete Guide]. |
* [https://realpython.com/documenting-python-code/ Documenting Python Code: A Complete Guide]. |
||
== |
== Convenzioni == |
||
In questa documentazione dovrebbero essere seguite alcune convenzioni per gli esempi Python. |
|||
In this documentation, some conventions for Python examples should be followed. |
|||
Questa è una tipica firma di funzione |
|||
This is a typical function signature |
|||
{{Code|code= |
{{Code|code= |
||
Line 30: | Line 31: | ||
}} |
}} |
||
* Gli argomenti con coppie chiave-valore sono facoltativi, con il valore predefinito indicato nella firma. Ciò significa che le seguenti chiamate sono equivalenti: |
|||
* Arguments with key-value pairs are optional, with the default value indicated in the signature. This means that the following calls are equivalent: |
|||
{{Code|code= |
{{Code|code= |
||
Line 40: | Line 41: | ||
}} |
}} |
||
: In questo esempio il primo argomento non ha un valore predefinito quindi dovrebbe essere sempre incluso. |
|||
: In this example the first argument doesn't have a default value so it should always be included. |
|||
* Quando gli argomenti vengono forniti con la chiave esplicita, gli argomenti opzionali possono essere forniti in qualsiasi ordine. Ciò significa che le seguenti chiamate sono equivalenti: |
|||
* 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 = make_wire(pointslist, closed=False, placement=None, face=None) |
Wire = make_wire(pointslist, closed=False, placement=None, face=None) |
||
Line 50: | Line 51: | ||
}} |
}} |
||
* Le linee guida di Python sottolineano la leggibilità del codice; in particolare, le parentesi dovrebbero seguire immediatamente il nome della funzione e uno spazio dovrebbe seguire una virgola. |
|||
* 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 59: | Line 60: | ||
}} |
}} |
||
* Se è necessario suddividere il codice su più righe, ciò dovrebbe essere fatto con una virgola tra parentesi quadre o parentesi quadre; la seconda riga dovrebbe essere allineata con la precedente. |
|||
* 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 70: | Line 71: | ||
}} |
}} |
||
* Le funzioni possono restituire un oggetto che può essere utilizzato come base di un'altra funzione di disegno. |
|||
* Functions may return an object that can be used as the base of another drawing function. |
|||
{{Code|code= |
{{Code|code= |
||
Wire = make_wire(pointslist, closed=True, face=True) |
Wire = make_wire(pointslist, closed=True, face=True) |
||
Line 76: | Line 77: | ||
}} |
}} |
||
= |
<span id="Imports"></span> |
||
== Importazione == |
|||
Python |
Le funzioni Python sono archiviate in file chiamati moduli. Prima di utilizzare qualsiasi funzione in quel modulo, il modulo deve essere incluso nel documento con l'istruzione {{incode|import}}. |
||
Questo crea funzioni con prefisso, ovvero {{incode|module.function()}}. Questo sistema previene conflitti di nome con funzioni che hanno lo stesso nome ma che provengono da moduli diversi. |
|||
Ad esempio, le due funzioni {{incode|Arch.make_window()}} e {{incode|myModule.make_window()}} possono coesistere senza problemi. |
|||
Gli esempi completi dovrebbero includere le importazioni necessarie e le funzioni prefissate. |
|||
Full examples should include the necessary imports and the prefixed functions. |
|||
{{Code|code= |
{{Code|code= |
Latest revision as of 10:24, 27 August 2023
Descrizione
Python è un linguaggio di programmazione di alto livello per scopi generali, comunemente utilizzato in applicazioni di grandi dimensioni per automatizzare alcune attività creando script o macro.
In FreeCAD, il codice Python può essere utilizzato per creare vari elementi in modo programmatico, senza la necessità di fare clic sull'interfaccia utente grafica. Inoltre, molti strumenti e ambienti di lavoro di FreeCAD sono programmati in Python.
Vedere Introduzione a Python per conoscere il linguaggio di programmazione Python, quindi Guida agli Script Python e Script di base per FreeCAD per iniziare a creare script in FreeCAD .
Leggibilità
La leggibilità del codice Python è uno degli aspetti più importanti di questo linguaggio. L'uso di uno stile chiaro e coerente all'interno della comunità Python facilita i contributi da parte di diversi sviluppatori, poiché i programmatori Python più esperti si aspettano che il codice sia formattato in un certo modo e segua determinate regole. Quando si scrive codice Python, è consigliabile seguire PEP8: Style Guide for Python Code e PEP257: Docstring Conventions.
Questi documenti presentano le spiegazioni in modo più intuitivo:
Convenzioni
In questa documentazione dovrebbero essere seguite alcune convenzioni per gli esempi Python.
Questa è una tipica firma di funzione
Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None)
- Gli argomenti con coppie chiave-valore sono facoltativi, con il valore predefinito indicato nella firma. Ciò significa che le seguenti chiamate sono equivalenti:
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 questo esempio il primo argomento non ha un valore predefinito quindi dovrebbe essere sempre incluso.
- Quando gli argomenti vengono forniti con la chiave esplicita, gli argomenti opzionali possono essere forniti in qualsiasi ordine. Ciò significa che le seguenti chiamate sono equivalenti:
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)
- Le linee guida di Python sottolineano la leggibilità del codice; in particolare, le parentesi dovrebbero seguire immediatamente il nome della funzione e uno spazio dovrebbe seguire una virgola.
p1 = Vector(0, 0, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
Wire = make_wire([p1, p2, p3], closed=True)
- Se è necessario suddividere il codice su più righe, ciò dovrebbe essere fatto con una virgola tra parentesi quadre o parentesi quadre; la seconda riga dovrebbe essere allineata con la precedente.
a_list = [1, 2, 3,
2, 4, 5]
Wire = make_wire(pointslist,
False, None,
None, None)
- Le funzioni possono restituire un oggetto che può essere utilizzato come base di un'altra funzione di disegno.
Wire = make_wire(pointslist, closed=True, face=True)
Window = make_window(Wire, name="Big window")
Importazione
Le funzioni Python sono archiviate in file chiamati moduli. Prima di utilizzare qualsiasi funzione in quel modulo, il modulo deve essere incluso nel documento con l'istruzione import
.
Questo crea funzioni con prefisso, ovvero module.function()
. Questo sistema previene conflitti di nome con funzioni che hanno lo stesso nome ma che provengono da moduli diversi.
Ad esempio, le due funzioni Arch.make_window()
e myModule.make_window()
possono coesistere senza problemi.
Gli esempi completi dovrebbero includere le importazioni necessarie e le funzioni prefissate.
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")
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub