为什么Python 可以使用 + 把两个字符串连接成一个字符串
伊谢尔伦
伊谢尔伦 2017-04-17 16:14:35
0
3
706

今天学习Python,看到这样一个例子,想问一下原因:

w = "This is the left side of..."
e = "a string with a right side."

print w + e

结果是:

This is the left side of...a string with a right side.

我想问一下为什么通过使用 + 可以把两个字符串连成一个长字符串,用的是什么方法?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(3)
Peter_Zhu

演算子のオーバーロード。具体的には、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 の文字列連結シュートアウト

さらに、プログラム最適化の鍵は、細部をすべて最適化することではなく、ボトルネック全体を最適化することであるため、被験者は微妙な最適化テクニックをすべて覚える必要はありません。ただし、具体的な実装の詳細を理解することは、言語を習得する上で非常に意味があります。

いいねを押す +0
迷茫

は実際にはいわゆる 特殊方法 を呼び出します。この場合は __add__
dir(str) であり、それらの「特別なメソッド」である

がわかります。

また、文字列を + 連結する場合、計算量が高すぎるため、join"".join(iterable) などの

メソッドほど優れていません。
いいねを押す +0
伊谢尔伦

+ この演算子は、パラメータとして 2 つの文字列を取るオーバーロードを提供します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!