Java >> Tutoriel Java >  >> Java

Comparer Java à Python :un mappage de syntaxe

Il y a quelque temps, j'ai écrit un article sur la façon d'aborder Python d'un point de vue Java. La raison générale pour laquelle j'ai écrit cet article était d'intéresser les étudiants de mes cours Java à Python. Après tout, j'aime la langue. Pourquoi ne devraient-ils pas ?

Bien sûr, cet article ne traite vraiment que de certaines des différences majeures telles que le typage statique et dynamique. Dans cet article, j'ai pensé qu'il serait amusant de mettre une liste d'éléments de syntaxe en Java et de partager leurs équivalents Python.

Mise en page des articles

Habituellement, j'utilise un peu un style narratif pour écrire mes articles. Je sais que les gens de la communauté du codage peuvent détester ça. Après tout, l'approche générale que nous avons en tant que communauté consiste à utiliser Internet pour obtenir des réponses. C'est pourquoi des sites comme Stack Overflow sont si populaires. En conséquence, je souhaite adopter une approche dans cet article qui aidera le plus de gens.

Plutôt que de décrire toutes les différences et de partager des anecdotes, je vais mettre en page le reste de cet article en utilisant des en-têtes clairs et des tableaux de recherche. Par exemple, si vous voulez savoir comment convertir à partir de && à l'équivalent Python, vous pouvez trouver la réponse dans la section des opérateurs booléens ci-dessous.

Cela dit, si vous pensez qu'il manque quelque chose, faites-le moi savoir !

Mappage de la syntaxe Java sur la syntaxe Python

Dans le reste de cet article, vous trouverez des tableaux pour tous les principaux types d'éléments de syntaxe en Java, tels que les opérateurs booléens et arithmétiques, ainsi que les structures de flux de contrôle.

Opérateurs booléens

Les opérateurs booléens sont un ensemble d'opérateurs utilisés pour donner un sens aux valeurs booléennes. Ces opérateurs incluent, mais sans s'y limiter, AND, OR et NOT.

Opérateur Java Python
ET && and
OU || or
PAS ! not

Souvent, les opérateurs de comparaison sont également inclus dans cet ensemble. Par exemple, il n'est pas rare que LESS-THAN soit considéré comme un opérateur booléen car la valeur de retour est un booléen.

Opérateur Java Python
MOINS DE < <
MOINS-QUE-OU-ÉGAL-À <= <=
ÉGAL == ==
SUÉRIEUR-OU-ÉGAL-À >= >=
SUÉRIEUR À > >
NON-ÉGAL != !=

Opérateurs arithmétiques

En plus des opérateurs booléens, la plupart des langages de programmation prennent en charge un ensemble d'opérateurs arithmétiques. Heureusement, ces correspondances sont plus ou moins univoques pour Java et Python.

Opérateur Java Python
AJOUT + +
SOUSTRACTION - -
MULTIPLICATIONS * *
DIVISION / /
DIVISION ÉTAGE N/A //
PUISSANCE N/A **
RESTE % N/A
MODULE N/A %

J'aime particulièrement disposer les opérateurs comme celui-ci car il existe des opérateurs entre les deux langages qui sont similaires mais pas identiques. Par exemple, l'opérateur de division Java dépend des types de nombres utilisés autour de lui. Pendant ce temps, l'opérateur de division Python se comporte exactement comme prévu. Si vous voulez un opérateur qui se comporte comme une division entière en Python, vous pouvez utiliser l'opérateur de division de plancher.

Des arguments similaires peuvent être avancés à propos des opérateurs de reste et de module. Python implémente le vrai module tandis que Java implémente uniquement le reste. La différence n'a souvent pas d'importance, mais il est important de garder à l'esprit les tâches courantes telles que les tests pairs et impairs. En vrai module, mod par deux garantit un nombre positif. Ce n'est pas vrai pour l'opérateur de reste.

Opérateurs d'affectation

Il peut sembler étrange de considérer plus d'un opérateur d'affectation, mais de nombreux langages incluent plusieurs opérateurs d'affectation composés pour l'arithmétique. Jetons un coup d'œil.

Opérateur Java Python
ÉNONCÉ DE MISSION = =
EXPRESSION D'AFFECTATION = :=
AFFECTATION D'AJOUT += +=
AFFECTATION DE SOUSTRACTION -= -=
AFFECTATION DE MULTIPLICATION *= *=
AFFECTATION DE DIVISION /= /=
AFFECTATION RESTE %= N/A
AFFECTATION DE MODULE N/A %=

De plus, Java propose des opérateurs d'affectation d'incrémentation et de décrémentation qui ne sont pas inclus dans Python :

Opérateur Java Python
INCRÉMENT ++ N/A
DÉCRÉMENT -- N/A

Flux de contrôle

Étant donné que Python et Java sont tous deux des langages de programmation impératifs, nous avons accès à diverses structures de flux de contrôle. Commençons par les différentes structures d'instruction if.

Structure Java Python
IF STATEMENT
if (condition) {
    // code
}
if condition:
    # code
INSTRUCTION SI/SINON
if (condition) {
    // code
} else {
    // code
}
if condition:
    # code
else:
    # code
IF/ELSE IF/ELSE STATEMENT
if (condition) {
    // code
} else if (condition) {
    // code
} else {
    // code
}
if condition:
    # code
elif condition:
    # code
else:
    # code

Une chose que je trouve vraiment intéressante à propos des structures d'instructions if en Java et Python est que Python a un mot-clé spécial pour "else if". Java, d'autre part, n'a pas de syntaxe spéciale pour "else if" et s'appuie plutôt sur l'imbrication des mots-clés else et if.

Cela dit, examinons les boucles.

Structure Java Python
BOUCLE PENDANT
while (condition) {
    // code
}
while condition:
    # code
BOUCLE POUR
for (init; condition; update) {
    // code
}
N/A
POUR CHAQUE BOUCLE
for (type name: iterable) {
    // code
}
for name in iterable:
    # code
FAIRE BOUCLE TANTQUE
do {
    // code
} while (condition)
N/A

Bien que j'aie tendance à dire qu'il n'y a pas de boucles for traditionnelles en Python, il n'est pas impossible d'en créer une. Par exemple, beaucoup de gens utilisent range() ou enumerate() pour simuler les boucles for traditionnelles.

Vous cherchez plus ?

Comme Java, Python est un langage qui possède de nombreuses fonctionnalités qui ne sont pas démontrées ici. Par exemple, voici une liste de certaines de mes fonctionnalités préférées du langage Python.

Si vous souhaitez en savoir plus sur Python, j'ai plusieurs séries qui tentent d'aborder le sujet du point de vue d'un débutant. Par exemple, si vous souhaitez apprendre à créer un bot Discord et Python en même temps, j'ai une série pour cela. De même, j'ai une série pour les personnes qui souhaitent apprendre Python de manière plus traditionnelle.

Pendant que vous êtes ici, j'apprécierais que vous jetiez un coup d'œil à certaines de ces ressources Python (#ad) :

  • Python efficace :90 façons spécifiques d'écrire un meilleur Python
  • Astuces Python :un éventail de fonctionnalités Python impressionnantes
  • Programmation Python :introduction à l'informatique

Sinon, merci encore pour votre présence ! J'apprécie votre temps.


Balise Java