Pythonの文字列の掛け算が気持ち悪い

python

Pythonは文字列の掛け算ができることは以前から知っていたのですが、つい前日衝撃的な文法に遭遇した時の話です。

str*int(文字列×整数)

普通に、str文字列*int整数

s = "string"
n = 10

s * n 
# 'stringstringstringstringstringstringstringstringstringstring'

これは直感的に、文字列string10回繰り返されるので特に違和感を感じることはありません。

int*str(整数×文字列)

これが気持ち悪いのです。
int整数*str文字列

s = "string"
n = 10

n * s
# 'stringstringstringstringstringstringstringstringstringstring'

整数10string回繰り返される。

数学的にものすごい違和感を感じます。

プログラムが数学と違うのは十分にわかるのですが(a = a + 1って書くし)ひたすらに違和感を覚えます。

演算結果はstr*intと同じにはなります。

なぜこのような計算順序を許容したのか謎です...

Pythonが好きな筆者ですが、これは違和感しか感じません。

Memo
連続企画

Djangoクラスベースビューのすヽめ

Memo
連続企画

Djangoでブログを作ろう

GitHub
制作物

Django-Boost

Djangoでの開発を加速する拡張ライブラリ
GitHub
制作物

ktPyString

kotlinにpythonと同等の文字列操作を提供するライブラリ
GitHub
制作物

py_string

c++にpythonと同等の文字列操作を提供するライブラリ
GitHub
制作物

SwiftyPyString

Swiftにpythonと同等の文字列操作を提供するライブラリ