5

多くの言語では、a = a+bはa+= bと書くことができます。数値演算の場合、a+bはb+aと同じであるため、単一の複合演算子で十分です。

また、a = a--bはa-=bと書くことができます。

ただし、abはbaと同じではありません。したがって、複合代入演算子はa=b-aに対しては機能しません。

それで、演算a = b op aopは+、-、*、/、%、および順序が重要になる可能性があります)の複合代入演算子はありますか?

[非可換演算]

4

3 に答える 3

4

いいえ、の略記法はありませんa = b + a。文字列に対して多くのことを行う必要がある場合はa = b + a、次のようなリストを作成することをお勧めします。

lst = []

...

lst.append("a")
lst.append("bb")
lst.append("ccc")
lst.append("dddd")

...

lst.reverse()

return ''.join(lst)   # "ddddcccbba"
于 2012-11-12T17:22:46.150 に答える
3

いいえ、ありません。


速記の起源

この省略形は、命令が正確にそれを行うアセンブリ言語に由来すると思われADDます-2つのオペランドを取り、加算を行い、それを最初のオペランドに格納します。

人々はこのように考えていたので、このパターンはC言語でもa += b速記として登場しました。他の言語はこれをCから取得しました。

a = a + b持っている、持っていない、または持っていない特別な理由はないと思いますa = b + a。プログラミングでは、これら2つのうちどれも頻繁に必要になることはないと思います。その理由は歴史的です。QWERTYキーボードレイアウトを使用し、他のレイアウトを使用しないのと同じ理由です。

更新これを参照してください。Cはアセンブリ言語ではなくB言語に基づいていたため、これは神話です。起源は明らかではありません。

考えられる理由

  • すべての演算子は言語をより複雑にします。Pythonは演算子のオーバーロードをサポートしているため、新しい演算子を作成するにはさらに多くの作業が必要です。
  • と比較して使用されることはめったにありません+=
  • 人々は(以前は)アセンブリ言語から+=操作というよりも一種の操作に使用されa = b + aていたので、速記が存在せず、要求しなかったという事実に問題はありませんでした。
  • 読みやすさの懸念。
  • 適切な構文の欠如。どのようにデザインしますか?

可能な解決策

考えられる最善の解決策はa = b + a、一見しただけで明確で読みやすいので、単に書くことです。同じ理由で(読みやすさ)(更新:誰が知っていますか?a++ )PythonはCや他の言語からの既知のものを提供していません。を入力する必要がありますa += 1+=速記はプログラミング初心者にもあまり読めませんが、それでも少なくとも何が何であるかを推測することはできます。それは、伝統、怠惰、読みやすさの間の妥協点です。

伝統がなければ、少なくともPythonでは読みやすさが勝つはずです。したがって、速記を探すのではなく、明確に数文字を書く必要があります。の場合ですa = b + a

ノート

より多くの文字列を連結する場合は.join()、パフォーマンスの問題に注意する必要があります。

于 2012-11-12T17:33:42.770 に答える
0

このようなショートカットがどの言語にも組み込まれていることはわかりませんが、一部の言語では作成できます。

たとえば、Scalaでは、基本的に独自の演算子を定義できます。

于 2012-11-12T17:26:50.187 に答える