Maison > Article > développement back-end > Rafraîchissez vos connaissances ! J'utilise ces six mauvaises habitudes qui ralentissent tout le temps mes programmes Python !
Dans cet article, j'ai résumé 6 exemples de méthodes d'écriture Python.
Une chose que nous ne pouvons pas éviter lors de l'utilisation de Python est l'importation de modules, qu'il s'agisse de modules intégrés ou de modules tiers. Parfois, nous n’avons besoin que d’une ou de quelques fonctions ou objets du module. Dans ce cas, nous devrions essayer d'importer uniquement les fonctions ou objets dont nous avons besoin au lieu d'importer le module racine.
Ceci est un exemple simple. Supposons que nous devions calculer la racine carrée de certains nombres dans un programme.
Dans le mauvais exemple, nous avons importé le module mathématique et utilisé math.sqrt() pour accéder à la fonction. Bien sûr, il n’y a rien de mal à cela, mais si nous pouvions importer la fonction sqrt(), les performances seraient meilleures.
L'utilisation de points est très intuitive. Accéder aux propriétés ou fonctions d'un objet en Python. La plupart du temps, aucun problème. Cependant, si nous pouvions éviter d’utiliser des points ou même de relier des points, les performances seraient en réalité meilleures.
L'exemple ci-dessous montre l'ajout de numéros à une liste, puis leur suppression.
Si vous ne croyez pas que cela fasse réellement la même chose, nous pouvons le vérifier.
Je peux m'attendre à ce que de nombreux développeurs Python sautent le pas et disent que la technique de cet exemple est un peu ridicule. En fait, même moi-même, j’écris rarement du code comme celui ci-dessus. Cependant, il est bon de savoir que nous pouvons le programmer de cette façon et même le rendre plus rapide.
Si nous voulons ajouter des éléments à une liste et en supprimer des millions de fois, nous devrions probablement envisager d'utiliser cette astuce. C'est pourquoi nous devons équilibrer les performances et la lisibilité de notre code.
Les chaînes sont immuables en Python. Par conséquent, lorsque nous utilisons "+" pour concaténer plusieurs chaînes en une seule longue chaîne, chaque sous-chaîne est exploitée individuellement.
Plus précisément, pour chaque sous-chaîne, il doit demander une adresse mémoire, puis la concaténer avec la chaîne d'origine dans cette adresse mémoire, ce qui devient une surcharge.
Cependant, lorsque nous utilisons la fonction join(), la fonction connaît toutes les sous-chaînes au préalable et l'adresse mémoire est allouée avec une longueur qui correspond à la chaîne finale jointe. Par conséquent, il n’y a aucune surcharge liée à l’allocation de mémoire pour chaque sous-chaîne.
Il est fortement recommandé d'utiliser la fonction join() autant que possible. Cependant, nous souhaitons parfois simplement concaténer deux chaînes. Ou, juste pour plus de commodité, nous souhaitons utiliser "+". Dans ces cas, l’utilisation du signe « + » entraîne une meilleure lisibilité et une longueur de code réduite.
De nombreux algorithmes nécessitent l'échange de valeurs de deux variables. Dans la plupart des autres langages de programmation, cela se fait généralement en introduisant une variable temporaire, comme indiqué ci-dessous.
Mais, en Python, nous n'avons pas besoin d'utiliser la variable temp. Python possède une syntaxe intégrée pour implémenter cet échange de valeurs, comme indiqué ci-dessous.
L'évaluation de "court-circuit" existe dans de nombreux langages de programmation, et Python fait de même. Fondamentalement, il fait référence au comportement de certains opérateurs booléens où le deuxième argument est exécuté ou évalué uniquement si le premier argument n'est pas suffisant pour déterminer la valeur de l'expression entière.
Montrons cela dans un exemple. Supposons que nous ayons la liste suivante.
my_dict = [ { 'name': 'Alice', 'age': 28 }, { 'name': 'Bob', 'age': 23 }, { 'name': 'Chris', 'age': 33 }, { 'name': 'Chelsea', 'age': 2 }, { 'name': 'Carol', 'age': 24 } ]
Notre travail consiste à filtrer la liste et à trouver toutes les personnes dont le nom commence par "C" et dont l'âge est de 30 ans ou plus.
Il y a deux conditions qui doivent être remplies en même temps :
Il n'y a rien de mal avec le code de l'exemple précédent. Cependant, dans cet exemple fictif particulier, seul « Chris » a plus de 30 ans.
Si nous écrivons d'abord la condition de vérification des noms, alors trois noms (Chris, Chelsea et Carol) sont remplis. La deuxième condition concernant l'âge est ensuite à nouveau vérifiée pour les 3 individus.
Cependant, en raison d'une évaluation de court-circuit, si nous écrivons d'abord la condition d'âge, seul l'âge de Chris sera supérieur à 30 ans, et il sera vérifié à nouveau si son nom commence par "C".
Dans ce cas, c'est presque 100% plus rapide.
Python utilise beaucoup de C pour améliorer les performances, c'est-à-dire CPython. En termes d'instructions de boucle, une boucle For en Python comporte relativement moins d'étapes, dont davantage sont exécutées en code C qu'une boucle While.
Ainsi, même si nous pouvons utiliser For-Loop en Python, nous ne devrions pas utiliser la boucle while. Ce n’est pas seulement parce que For-Loop est plus élégant en Python, mais aussi plus performant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!