Maison > Article > développement back-end > Résumé de plusieurs erreurs que commettent souvent les novices en Python
Il existe quelques petits pièges dans le langage python, qui sont particulièrement faciles à confondre et à commettre des erreurs. Si les débutants ne font pas attention, il est facile de tomber dans des pièges. Ci-dessous, je vais vous donner une analyse approfondie de certains d'entre eux. ces pièges. J'espère que cela sera utile aux débutants, les amis dans le besoin peuvent s'y référer, jetons un coup d'œil ci-dessous.
Avant-propos
Cet article résume principalement plusieurs erreurs courantes commises par les novices qui apprennent Python. Il y a quatre erreurs faciles au total. Faites une erreur. , jetons un œil à l'introduction détaillée ci-dessous.
1. i+=1 n'est pas égal à ++i
Les débutants qui ne connaissent pas grand-chose au langage Python, et cela arrive avoir c++, java Avec le contexte du langage, il est facile de confondre ++i et i+=1
Regardons d'abord un petit exemple :
i=0 mylist=[1,2,3,4,5,6] while i <len(mylist): print(mylist[i]) ++i
Ce code tiendra pour acquis qu'il n'y a pas de problème. C'est une sortie en boucle et je garde +1, ce qui est tout à fait vrai. En fait, ce n'est pas vrai. continuez à afficher 1,Une boucle infinie Parce que l'interpréteur Python fonctionnera ++i comme +(+i)
print(+1) >>>1 print(++1) >>>1 print(+++1) >>>1incrémentation
telle que nous la comprenons.
2. Distinguer l'utilisation de == et isLorsqu'ils jugent si les chaînes sont égales, les débutants confondront particulièrement is et ==, ce qui résultats dans différents programmes. Le comportement est différent selon les circonstances :
Par exemple, regardons d'abord un exemple simple :
a='Hi' b='Hi' print(a is b) >>>True print(a==b) >>>True #看起来is和==好像是一样的Regardons-le à nouveau Deuxième exemple :
str1='Wo shi yi ge chi huo' str2='Wo shi yi ge chi huo' print(str1 is str2) >>>False#is的结果是False print(str1==str2) >>>True #==的结果为True,看二者不一样了吧Troisième exemple :
str3='string' str4=''.join(['s','t','r','i','n','g']) print(str3) >>>string print(str3 is str4) >>>False #is的结果是False print(str3==str4) >>>True #==的结果为True,看二者不一样了吧Nous utilisons La fonction
intégrée est utilisée pour renvoyer l'adresse mémoire de l'objet Si vous la vérifiez, elle sera claire. est l'identifiant de l'objet, utilisé pour comparer deux Si l'
espace mémoire de l'objet est le même, s'il utilise la même adresse d'espace, et id()
==
si le contenu des deux objets est égal.
3 Pour connecter des chaînes, en particulier des chaînes à grande échelle, il est préférable d'utiliser join au lieu de +Lors du traitement des chaînes, la clé est la connexion. La chaîne en Python est un peu différente des autres langages. C'est un objet immuable et ne peut pas être modifié une fois créé. Cette fonctionnalité affectera directement. l'efficacité de la connexion de chaînes en Python.
Utilisez + pour connecter des chaînes :
Utilisez join pour connecter des chaînes
str1,str2,str3='test','string','connection' print(str1+str2+str3) >>>test string connection
La raison est que pour connecter des chaînes : S1+S2. +S3+....+SN, car les caractères sont des objets immuables. Un nouveau morceau de mémoire doit être demandé une fois exécuté. Dans ce cas, lors du processus de connexion de N chaînes, N-1 résultats intermédiaires seront générés. Chaque fois qu'un résultat intermédiaire est généré, la mémoire doit être appliquée une fois. De cette façon, cela affectera sérieusement l'efficacité de l'exécution.
str1,str2,str3='test ','string ','connection' print(''.join([str1,str2,str3])) >>>test string connection
Par conséquent, pour la concaténation de chaînes,
en particulier pour le traitement de grandes chaînes, il est préférable d'utiliser la jointure
long_str_list=['This is a long string' for n in range(1,100000)]
4. N'écrivez pas après les boucles for et while else block
Python fournit une fonctionnalité que de nombreux langages de programmation ne prennent pas en charge, c'est-à-dire vous pouvez écrire un bloc else directement après le bloc d'instructions à l'intérieur de la boucle. Par exemple :
Ce bloc else s'exécutera
immédiatement après l'exécution de la boucle entière. Si oui, pourquoi s'appelle-t-on autrement ? Pourquoi ne pas l'appeler et ? Dans l'instruction if/else, else signifie : si le bloc if précédent n'est pas exécuté, alors le bloc else est exécuté.
Il en va de même pour try/sauf/else. La signification de else dans cette structure est : si le bloc try précédent n'échoue pas, alors exécutez le bloc else.
for i in range(3): print('Loop %d'%i) else: print('Else block') >>>Loop 0 >>>Loop 1 >>>Loop 2 >>>Else block
Voici le problème. Les programmeurs qui débutent avec Python peuvent interpréter le bloc else dans la structure for/else comme :
En fait, c'est tout le contraire - L'utilisation de l'instruction break dans la boucle pour sauter plus tôt empêchera le programme d'exécuter le bloc else , ce qui est un peu déroutant pour ceux qui ne sont pas familiers. avec for/else, ce sera assez déroutant pour les personnes qui lisent le code.
Résumé
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!