Pythonの文字列の掛け算が気持ち悪い
Pythonは文字列の掛け算ができることは以前から知っていたのですが、つい前日衝撃的な文法に遭遇した時の話です。
str*int(文字列×整数)
普通に、str文字列
*int整数
s = "string"
n = 10
s * n
# 'stringstringstringstringstringstringstringstringstringstring'
これは直感的に、文字列string
が10
回繰り返されるので特に違和感を感じることはありません。
int*str(整数×文字列)
これが気持ち悪いのです。
int整数
*str文字列
s = "string"
n = 10
n * s
# 'stringstringstringstringstringstringstringstringstringstring'
整数10
がstring
回繰り返される。
数学的にものすごい違和感を感じます。
プログラムが数学と違うのは十分にわかるのですが(a = a + 1
って書くし)ひたすらに違和感を覚えます。
演算結果はstr*intと同じにはなります。
なぜこのような計算順序を許容したのか謎です…
Pythonが好きな筆者ですが、これは違和感しか感じません。