richardzhiming 氏が述べたように、a+b は非効率であり、これは多数の + 操作に基づいて議論されています。これは、String が不変オブジェクトであるため、実際にはオブジェクト文字列 a に文字列 b を追加するのではなく、新しいオブジェクトを作成してそこに a と b をコピーする必要があります。したがって、+ を大量に実行すると、非常に多くの一時 String オブジェクトが作成されることになります。 ''.join(str_list)多くの String オブジェクトを作成する必要がなく、文字列の作成とコピーが一度に完了するため、さらに優れています。
演算子のオーバーロード。具体的には、Python ではすべての変数がオブジェクトの形式で存在します。つまり、Object を継承します。オブジェクトにはそのようなメソッド
object.__add__(self, other)
があります。式x+y
が処理されるたびに、x.__add__(y)
が呼び出されます。さらに、交換法則については、__radd__
を呼び出すy+x
の処理に使用されるy.__radd__(x)
メソッドもあります。したがって、
リーリー+
自体をオーバーロードすることもできます。たとえば、Free
このクラスは、+
演算子の左/右パラメータになることができます。richardzhiming 氏が述べたように、
a+b
は非効率であり、これは多数の+
操作に基づいて議論されています。これは、String が不変オブジェクトであるため、実際にはオブジェクト文字列 a に文字列 b を追加するのではなく、新しいオブジェクトを作成してそこに a と b をコピーする必要があります。したがって、+
を大量に実行すると、非常に多くの一時 String オブジェクトが作成されることになります。''.join(str_list)
多くの String オブジェクトを作成する必要がなく、文字列の作成とコピーが一度に完了するため、さらに優れています。文字列の連結に関する具体的な実験と詳細な議論については、以下を参照してください:
Python での効率的な文字列連結
Python の文字列連結シュートアウト
さらに、プログラム最適化の鍵は、細部をすべて最適化することではなく、ボトルネック全体を最適化することであるため、被験者は微妙な最適化テクニックをすべて覚える必要はありません。ただし、具体的な実装の詳細を理解することは、言語を習得する上で非常に意味があります。
は実際にはいわゆる
がわかります。特殊方法
を呼び出します。この場合は__add__
dir(str)
であり、それらの「特別なメソッド」であるまた、文字列を + 連結する場合、計算量が高すぎるため、
メソッドほど優れていません。join
"".join(iterable)
などの+ この演算子は、パラメータとして 2 つの文字列を取るオーバーロードを提供します