Formation PUB400 : Python, 2018 Python

2.9 La syntaxe Python vs autres langages


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;
Console.WriteLine(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)

os.linesep

 

PHP_EOL

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#

Pour plus d'information

« 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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre