Python 言語にはいくつかの小さな落とし穴があり、初心者が注意しないと特に混乱して間違いを犯しやすくなります。以下にそのいくつかについて詳しく説明します。初心者に役立つことを願っています。必要な場合は、以下を参照してください。
はじめに
この記事では、主に Python を学習している初心者が犯しやすいいくつかの間違いをまとめています。以下で詳しく紹介します。
1. i+=1 は ++i と等しくありません
初心者が Python 言語についてあまり知識がなく、C++ と Java の言語背景を持っている場合、混同しやすいです + +i と i+=1
まず小さな例を見てみましょう:
i=0 mylist=[1,2,3,4,5,6] while i <len(mylist): print(mylist[i]) ++i
このコードはループ出力であり、i は +1 を維持します。実際には、そうではありません。Python インタープリターは ++i を +(+i)
として操作するため、コードは常に 1 を出力します。その中で、+ は正の数の記号を意味し、-i も同様です+(+i)
.其中+表示是正数符号,对于--i也是类似的.
print(+1) >>>1 print(++1) >>>1 print(+++1) >>>1
这下明白了++i虽然在Python语法是合法的,但是并不是我们理解的自增的操作.
二、分清楚==和is的用法
在判断字符串是否相等的时候,初学者特别会弄混is和==,这样的结果是程序在不同的情况下表现不同:
比如先看一个简单的例子:
a='Hi' b='Hi' print(a is b) >>>True print(a==b) >>>True #看起来is和==好像是一样的
我们再看第二个例子:
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,看二者不一样了吧
第三个例子
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,看二者不一样了吧
这就是很容易混淆初学者的地方,感觉很奇怪,为什么有的时候is和==输出相同,有的时候不同呢.好我们来一探究竟:
我们用内置的id()
str1,str2,str3='test','string','connection' print(str1+str2+str3) >>>test string connection
increment の演算ではないことがわかりました。 .
2. == と is の使用法を明確に区別する 文字列が等しいかどうかを判断するとき、特に初心者は is と == を混同し、その結果、プログラムは状況によって異なる動作をします。たとえば、最初に簡単な例を見てみましょう:
str1,str2,str3='test ','string ','connection'
print(''.join([str1,str2,str3]))
>>>test string connection
long_str_list=['This is a long string' for n in range(1,100000)]
3 番目の例
for i in range(3): print('Loop %d'%i) else: print('Else block') >>>Loop 0 >>>Loop 1 >>>Loop 2 >>>Else block
混乱させる初心者の皆さん、奇妙に感じますが、なぜ is と == の出力が同じである場合もあれば、異なる場合もあります。調べてみましょう: 組み込みの id()
関数を使用します。はオブジェクトのメモリを返すために使用されます。アドレスは確認後に明らかになります。
は、2 つのオブジェクトの
メモリ空間が同じであるかどうかを比較するために使用されます。
==
の内容が等しいかどうかの比較です。
3. 文字列、特に大規模な文字列を接続するには、+ の代わりに join を使用するのが最善です。
Python の文字列は他の言語とは少し異なり、一度作成すると変更できません。この機能は Python の文字列連結の効率に直接影響します。 .文字列を連結するには + を使用します:
rrreee
rrreee
特に大規模な文字列処理の場合は、joinを使用するのが最善です
🎜🎜4. forループとwhileループの後にelseブロックを書かないでください🎜🎜🎜🎜Pythonには、次の機能があります。多くのプログラミング言語はサポートしていません。つまり、ループ内で記述できます。else ブロックはステートメント ブロックの直後に記述します。例: 🎜🎜🎜🎜rrreee🎜🎜🎜この else ブロックは、ループ全体が実行された🎜直後に実行されます。もしそうなら、なぜそれが else と呼ばれるのでしょうか?と呼んでみませんか? if/else ステートメントの else は、前の if ブロックが実行されない場合は、else ブロックが実行されることを意味します。 🎜🎜🎜🎜この構造の else の意味は、前の try ブロックが失敗しなかった場合に else ブロックを実行することです。 🎜🎜🎜🎜try/finally も非常に直感的です。つまり、前の try ブロックを実行した後は、何があっても、finally ブロックが常に実行されます。 🎜🎜🎜🎜ここで、Python を初めて使用するプログラマは、for/else 構造の else ブロックを次のように理解するかもしれません: 🎜ループが正常に実行されない場合は、else ブロックを実行します🎜。 🎜実際には、その逆です。 ループ内で Break ステートメントを使用して早期に抜け出すと、プログラムは else ブロックを実行しなくなります。これは、for/else に慣れていない人にとっては少し混乱します。コードを読む人は非常に混乱してしまいます。
概要
以上がPython 初心者がよく犯すいくつかの間違いのまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。