後輩が次のようなコードの挙動で悩んでいました。
user = User()
print(user.name)
# => ninomiyt
# ただの文字列
print(type(user.name)
# => str
print("Hello, {}!".format(user.name))
# => Hello, ninomiy!
たしかに不審な挙動だったので調べたところ、
- MacのVSCodeでbackspaceの制御文字が混ざることがある
- Pythonの
print
関数がbackspaceで文字を消した上で出力する
ことのコンボが決まった結果「実は{}
の後ろにbackspaceの制御文字が混ざっていて一文字消えてしまう」ような現象が発生していたようです。
無事、以下のようなコードで再現することができました。変なバグじゃなくてよかった。
text = "text" + chr(0x08)
print(text)
# => tex
# 文字列としては保持している
print(len(text))
# => 5