Si vous avez déjà travaillé avec quelques langages de programmation, vous savez que la syntaxe varie d'un langage à l'autre. Parfois, les différences sont minimes mais d'autre fois, elles peuvent être déroutantes.
Pour vous aider à vous acclimater à Python, voici quelques éléments de syntaxe à connaître et leur comparaison avec d'autres langages.
Python | JavaScript | PHP | C# | |
---|---|---|---|---|
Chaînes de caractères |
nom = "Annie" ou nom = 'Annie' Les deux sont équivalents mais les programmeurs préfèrent généralement les apostrophes. Les triples apostrophes ou guillemets permettent de générer une chaîne incluant les sauts de ligne et tabulations. Très utile pour générer du HTML ou du JSON. html = ''' <ul> <li>Premier élément</li> <li>Deuxième élément</li> </ul> ''' L'ajout d'un b devant une chaîne transformera cette chaîne en une chaîne d'octets, requis dans certains contextes précis. chaine_octets = b"Bonjour" L'ajout d'un f devant une chaîne permet de la formater. nom = 'Annie' salutation = f'Bonjour, {nom}!' |
nom = "Annie"; ou nom = 'Annie'; |
$nom = "Annie"; ou $nom = 'Annie'; La version avec guillemets permet d'interpréter des variables dans la chaîne. $texte = "Bonjour $nom"; La version avec apostrophes est très légèrement plus rapide. |
nom = "Annie"; |
Booléens |
True False
Sensible à la casse |
true false
Sensible à la casse |
True ou true ou TRUE False ou false ou FALSE
Insensible à la casse |
true false
Certaines fonctions C# retournent cependant True ou False...
bool valeur = true; |
Opérateurs booléens |
and or not |
&& || ! |
&& ou and || ou or ! |
&& || ! |
Concaténation |
nom_complet = prenom + ' ' + nom_famille |
nomComplet = prenom + ' ' + nomFamille; |
$nomComplet = $prenom . ' ' . $nomFamille; |
nomComplet = prenom + '" " + nomFamille; |
Incrémentation |
i += 1 |
i += 1; (affectation après addition) i++ (opérateur d'incrémentation en suffixe) ++i (opérateur d'incrémentation en préfixe) |
$i += 1; $i++ (post-incrémente) ++$i (pré-incrémente) |
i += 1; i++ ++i |
Conversion de type | nombre= int(saisie) |
nombre = parseInt(saisie); |
$nombre = (int)$saisie; ou $nombre = intval($saisie); |
nombre = Convert.ToInt32(saisie); ou Int32.TryParse(saisie, out nombre); |
Affichage à l'écran |
print(nom) ou, pour éviter les sauts de ligne : print(nom, end='') |
L'affichage se fait à l'aide de manipulations du DOM : balise.innerHTML = nom;
Si on utilise jQuery : $(balise).html(nom);
Pour afficher à la console : console.log(nom);
Pour afficher dans une fenêtre popup : window.alert(nom); |
echo $nom; |
Dans une page Web : Response.Write(nom);
À la console : Console.WriteLine(nom); |
Lecture à la console | nombre = input('Veuillez entrer un nombre : ') |
Console.WriteLine("Veuillez entrer un nombre : "); nombre = Console.ReadLine(); |
||
Tableaux |
valeurs = ['a', 'b', 'c'] En Python, on dit que c'est une liste (modifiable, longueur variable) Il existe également des tuples (immuables mais plus performants) : valeurs = ('a', 'b', 'c') ou, s'il y a un seul élément dans le tuple : valeurs = ('a',) |
var valeurs = ['a', 'b', 'c']; | $valeurs = ['a', 'b', 'c']; | string[] valeurs = {"a", "b", "c"}; |
Tableaux associatifs (dictionnaires) |
configuration = { 'menu': 'gauche', 'langue': 'fr' } ... valeur = configuration['langue'] |
var configuration = { 'menu' : 'gauche', 'langue': 'fr' ... valeur = configuration['langue']; |
$configuration = [ 'menu' => 'gauche', 'langue' => 'fr', ]; ... $valeur = $configuration['langue'] |
Dictionary<string, string> configuration = new Dictionary<string, string>() { {"menu","gauche"}, {"langue", "fr"} }; ... valeur = configuration["langue"]; |
Vérifier si une valeur fait partie d'une liste de valeurs |
if i in (3, 6, 9): ... |
|||
Conditions |
if nom == 'Annie': ... elif nom == 'Toto': ... else: ...
Note : l'indentation (4 espaces) est importante : c'est elle qui indique quand un bloc d'instruction se termine. |
if (nom == 'Annie') { ... } else if (nom == 'Toto') { ... } else { ... } |
if ($nom == 'Annie') { ... } elseif ($nom == 'Toto') { ... } else { ... } |
if (nom == "Annie) { ... } else if (nom == "Toto") { ... } else { ... } |
Boucles while |
while x < 10: ... |
while (x < 10) { ... } |
while (x < 10) { ... } |
while (x < 10)
{ ... } |
Boucles sur un nombre déterminé d'itérations |
for i in range(10): ...
La boucle pourrait commencer à une autre valeur que 0, il est possible de spécifier le départ, la fin (exclue de la boucle) et la valeur du saut : for i in range(1, 10, 1) ... |
for (i = 0; i < 10; i++) { ... } |
for ($i = 0; $i < 10; $i++) { ... } |
for (i = 0; i < 10; i++) { ... } |
Boucles sur les éléments d'un tableau |
valeurs = ['a', 'b', 'c'] for valeur in valeurs: ... |
var valeurs = ['a', 'b', 'c'];
for (var valeur in valeurs) { ... } |
$valeurs = ['a', 'b', 'c'];
foreach ($valeurs as $valeur) { ... } |
string[] valeurs = {"a", "b", "c"};
foreach (int valeur in valeurs) { ... } |
Opérateur ternaire (inline if) |
valeur_si_vrai if condition else valeur_si_faux
Remarquez que l'ordre des opérandes est différent des autres langages. Ex : majeur = True if age >= 18 else False |
condition ? valeurSiVrai : valeurSiFaux |
condition ? valeurSiVrai : valeurSiFaux |
condition ? valeurSiVrai : valeurSiFaux |
Exceptions |
try: ... except TypeException as e: ... # traitement d'une exception précise except Exception as e: ... # traitement des autres exceptions else: ... # traitement si pas d'exception finally: ... # traitement si exception ou non |
try { ... } catch (e) { if (e instanceof TypeException) { ... // traitement d'une exception précise } else { ... // traitement des autres exceptions } } finally { ... // traitement si exception ou non } |
try { ... } catch (TypeException $e) { ... // traitement d'une exception précise } catch (Throwable $e) { ... // traitement des autres exceptions si PHP 7 } catch (Exception $e) { ... // traitement des autres exceptions si PHP 5.X } finally { ... // traitement si exception ou non } |
try { ... } catch (TypeException) { ... // traitement d'une exception précise } catch (Exception e) { ... // traitement des autres exceptions } finally { ... // traitement si exception ou non } |
Commentaires | # |
// /* ... */ |
# // /* ... */ |
// /* ... */ |
Commentaires de documentation |
Cette documentation d'appelle Docstring.
def ma_fonction(parametre): """Résumé de la fonction sous forme impérative.
Autres paragraphes pour documenter les paramètres et la valeur de retour.
""" ... |
function maFonction(parametre) { /// <summary>Résumé de la fonction.</summary> /// <param name="parametre" type="Number">Description du paramètre.</param> /// <returns type="Number">Description de la valeur de retour.</returns> ... } |
Cette documentation s'appelle phpDocumentor.
/** * Résumé de la fonction. * * @param int $parametre Description du paramètre. * * @author Annie Gagnon <anniegagnon@gmail.com> * @return int Description de la valeur de retour. * */ function maFonction(int $parametre) : int { ... } |
/// <summary> /// Résumé de la fonction. /// </summary> /// <param name="parametre">Description du paramètre.</param> /// <returns>Description de la valeur de retour.</returns> int MaFonction(int parametre) { ... } |
Constante pour changement de ligne qui vaudra '\n' (systèmes Unix comme Linux et Mac) ou '\r\n' (Windows) |
Environment.NewLine | |||
Valeur nulle |
variable = None |
let variable = null; | $variable = NULL; | string variable = null; |
Python | JavaScript | PHP | C# |
Pour compléter ce tableau, voici quelques normes de programmation généralement appliquées dans différents langages.
Python | JavaScript | PHP | C# | |
---|---|---|---|---|
Projets |
Il n'y a pas de convention officielle pour le nom du projet. Voici ce que je vous suggère : touteenminuscules ou casse_serpent Sous PyCharm, puisque l'environnement de développenent est copié pour chacun des projets, je vous suggère de regrouper dans un même projet tous vos exercices qui utilisent une même base de données. Ceux qui n'utilisent aucune BD pourront être placés par exemple dans un projet console_sans_bd et dans un autre projet graphique_sans_bd. |
|||
Espaces de noms | toutenminuscules | |||
Fichiers |
toutenminuscules ou casse_serpent |
toutenminuscules ou minuscules-avec-traits-d-union |
Dépend du framework utilisé | |
Noms de variables | casse_serpent | casseChameau |
Le guide officiel précise qu'aucune recommandation n'est faite pour le nom des variables. Cependant, la casseChameau est la plus utilisée. Les variables débutent obligatoirement par un $. |
casseChameau |
Noms de classes | CassePascal | CassePascal | CassePascal | CassePascal |
Noms de fonctions | casse_serpent | casseChameau | casseChameau | CassePascal |
Noms de constantes | MAJUSCULES_AVEC_CASSE_SERPENT | MAJUSCULES_AVEC_CASSE_SERPENT | MAJUSCULES_AVEC_CASSE_SERPENT | CassePascal |
Python | JavaScript | PHP | C# |
« Python 3.6.4 documentation ». Python. https://docs.python.org/3.6/index.html
« Learning Python: From Zero to Hero ». Medium. https://medium.freecodecamp.org/learning-python-from-zero-to-hero-120ea540b567
« PEP 8 -- Style Guide for Python Code ». Python. https://www.python.org/dev/peps/pep-0008/
« PEP257: Good Python docstrings by example ». Dolph Mathews. http://blog.dolphm.com/pep257-good-python-docstrings-by-example/
▼Publicité