Python/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "* Lorsque les arguments sont donnés avec la clé explicite, les arguments facultatifs peuvent être donnés dans n'importe quel ordre. Cela signifie que les appels suivants s...")
(Updating to match new version of source page)
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{VeryImportantMessage|(Novembre 2018) FreeCAD a été conçu à l'origine pour fonctionner avec Python 2. De nombreuses fonctionnalités fonctionnent avec Python 3, mais d'autres non. Rendre FreeCAD totalement compatible avec Python 3 est un travail en cours.}}
{{VeryImportantMessage|FreeCAD a été conçu à l'origine pour fonctionner avec Python 2.x. Cette série s'est terminée avec la version 2.7.18 du 20 avril 2020 et a été remplacée par Python 3. Le développement futur de FreeCAD se fera exclusivement avec Python 3, et la rétrocompatibilité ne sera pas supportée.}}


== Description ==
== Description ==

{{TOCright}}


[https://www.python.org Python] est un langage de programmation de haut niveau à usage général très utilisé dans les grandes applications pour automatiser certaines tâches en créant des scripts ou des [[macros/fr|macros]].
[https://www.python.org Python] est un langage de programmation de haut niveau à usage général très utilisé dans les grandes applications pour automatiser certaines tâches en créant des scripts ou des [[macros/fr|macros]].
Line 10: Line 12:
Voir [[Introduction to Python/fr|Introduction à Python]] pour en savoir plus sur le langage de programmation Python, puis sur [[Python scripting tutorial/fr|Tutoriel sur les scripts Python]] et sur [[FreeCAD Scripting Basics/fr|principes de base des scripts FreeCAD]] pour lancer la création de scripts dans FreeCAD.
Voir [[Introduction to Python/fr|Introduction à Python]] pour en savoir plus sur le langage de programmation Python, puis sur [[Python scripting tutorial/fr|Tutoriel sur les scripts Python]] et sur [[FreeCAD Scripting Basics/fr|principes de base des scripts FreeCAD]] pour lancer la création de scripts dans FreeCAD.


== Lisibilité ==
Lorsque vous écrivez du code Python, il est conseillé de suivre le [https://www.python.org/dev/peps/pep-0008/ PEP8: guide du style pour coder en Python].

La lisibilité du code Python est l'un des aspects les plus importants de ce langage. L'utilisation d'un style clair et cohérent au sein de la communauté Python facilite les contributions de différents développeurs, car la plupart des programmeurs Python expérimentés s'attendent à ce que le code soit formaté d'une certaine manière et suive certaines règles. Lors de l'écriture de code Python, il est conseillé de suivre [https://www.python.org/dev/peps/pep-0008/ PEP8: Guide de style pour Python Code] et [https://www.python.org/dev/peps/pep-0257/ PEP257: Conventions Docstring].

Ces documents présentent des explications d'une manière plus conviviale :
* [https://realpython.com/python-pep8/ Comment écrire un beau code Python avec PEP 8]
* [https://realpython.com/documenting-python-code/ Documenter du code Python : un guide complet].


== Conventions ==
== Conventions ==
Line 18: Line 26:


{{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)
}}
}}


Line 35: Line 43:
* Lorsque les arguments sont donnés avec la clé explicite, les arguments facultatifs peuvent être donnés dans n'importe quel ordre. Cela signifie que les appels suivants sont équivalents:
* Lorsque les arguments sont donnés avec la clé explicite, les arguments facultatifs peuvent être donnés dans n'importe quel ordre. Cela signifie que les appels suivants sont équivalents:
{{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)
}}
}}


* Les directives de Python insistent sur la lisibilité du code; en particulier, les parenthèses doivent suivre immédiatement le nom de la fonction et un espace doit suivre une virgule.
* 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)
}}
}}


* Si le code doit être divisé sur plusieurs lignes, utilisez une virgule entre parenthèses ou entre crochets. la deuxième ligne doit être alignée sur la précédente.
* 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)
}}
}}


* Les fonctions peuvent renvoyer un objet qui peut être utilisé comme base d'une autre fonction de dessin.
* 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 ==
== Importations ==


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.
Les fonctions Python sont stockées dans des fichiers appelés modules. Avant d'utiliser une fonction de ce module, celui-ci doit être inclus dans le document avec l'instruction {{incode|import}}.


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.
Cela crée des fonctions préfixées, c'est-à-dire {{incode|module.function()}}. Ce système empêche les conflits de noms avec des fonctions portant le même nom mais provenant de modules différents.
For example, the two functions {{incode|Arch.makeWindow()}} and {{incode|myModule.makeWindow()}} may coexist without problem.
Par exemple, les deux fonctions {{incode|Arch.make_window()}} et {{incode|myModule.make_window()}} peuvent coexister sans problème.


Des exemples complets doivent inclure les importations nécessaires et les fonctions préfixées.
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 09:22, 17 October 2021

FreeCAD a été conçu à l'origine pour fonctionner avec Python 2.x. Cette série s'est terminée avec la version 2.7.18 du 20 avril 2020 et a été remplacée par Python 3. Le développement futur de FreeCAD se fera exclusivement avec Python 3, et la rétrocompatibilité ne sera pas supportée.

Description

Python est un langage de programmation de haut niveau à usage général très utilisé dans les grandes applications pour automatiser certaines tâches en créant des scripts ou des macros.

Dans FreeCAD, le code Python peut être utilisé pour créer divers éléments par programmation, sans qu'il soit nécessaire de cliquer sur l'interface graphique. De plus, de nombreux outils et ateliers de FreeCAD sont programmés en Python.

Voir Introduction à Python pour en savoir plus sur le langage de programmation Python, puis sur Tutoriel sur les scripts Python et sur principes de base des scripts FreeCAD pour lancer la création de scripts dans FreeCAD.

Lisibilité

La lisibilité du code Python est l'un des aspects les plus importants de ce langage. L'utilisation d'un style clair et cohérent au sein de la communauté Python facilite les contributions de différents développeurs, car la plupart des programmeurs Python expérimentés s'attendent à ce que le code soit formaté d'une certaine manière et suive certaines règles. Lors de l'écriture de code Python, il est conseillé de suivre PEP8: Guide de style pour Python Code et PEP257: Conventions Docstring.

Ces documents présentent des explications d'une manière plus conviviale :

Conventions

Dans cette documentation, certaines conventions relatives aux exemples Python doivent être suivies.

Ceci est une signature de fonction typique

Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None)
  • Les arguments avec des paires clé-valeur sont facultatifs, la valeur par défaut étant indiquée dans la signature. Cela signifie que les appels suivants sont équivalents:
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)
Dans cet exemple, le premier argument n'a pas de valeur par défaut, il devrait donc toujours être inclus.
  • Lorsque les arguments sont donnés avec la clé explicite, les arguments facultatifs peuvent être donnés dans n'importe quel ordre. Cela signifie que les appels suivants sont équivalents:
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)
  • Les directives de Python insistent sur la lisibilité du code; en particulier, les parenthèses doivent suivre immédiatement le nom de la fonction et un espace doit suivre une virgule.
p1 = Vector(0, 0, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
Wire = make_wire([p1, p2, p3], closed=True)
  • Si le code doit être divisé sur plusieurs lignes, utilisez une virgule entre parenthèses ou entre crochets. la deuxième ligne doit être alignée sur la précédente.
a_list = [1, 2, 3,
          2, 4, 5]

Wire = make_wire(pointslist,
                False, None,
                None, None)
  • Les fonctions peuvent renvoyer un objet qui peut être utilisé comme base d'une autre fonction de dessin.
Wire = make_wire(pointslist, closed=True, face=True)
Window = make_window(Wire, name="Big window")

Importations

Les fonctions Python sont stockées dans des fichiers appelés modules. Avant d'utiliser une fonction de ce module, celui-ci doit être inclus dans le document avec l'instruction import.

Cela crée des fonctions préfixées, c'est-à-dire module.function(). Ce système empêche les conflits de noms avec des fonctions portant le même nom mais provenant de modules différents. Par exemple, les deux fonctions Arch.make_window() et myModule.make_window() peuvent coexister sans problème.

Des exemples complets doivent inclure les importations nécessaires et les fonctions préfixées.

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")