Pythonの%sと%rの違い:いつ%rを使うべきか?
Pythonの文字列フォーマットにおいて、%sはstr()を使ってオブジェクトを文字列化し、%rはrepr()を使って文字列化します。
整数などの一部のオブジェクトでは、両者は同じ結果を返します。しかし、repr()には重要な特徴があります。対応している型については、有効なPython構文として評価できる文字列を返すという規約に従う点です。つまり、その出力を使えば、元のオブジェクトを曖昧さなく再現できるのです。
例えば、改行文字を含む文字列の場合、%sでは実際に改行されて表示されるのに対し、%rではエスケープシーケンスの\nがそのまま表示され、引用符も保持されます。
具体例
>>> string = "Hello\nworld"
>>> print("Example: %s" % string)
Example: Hello
world
>>> print("Example: %r" % string)
Example: 'Hello\nworld'%rの出力結果は有効なPython式なので、eval()などを使って実際にオブジェクトを再現することができます。デバッグ時に変数の中身を正確に確認したい場合や、ログにオブジェクトの厳密な状態を記録したい場合に、%r(またはrepr())が特に役立ちます。一方、ユーザー向けの表示には読みやすい%s(またはstr())を使うのが一般的です。
-
ExcelでVLOOKUPの代わりにINDEX-MATCHを使うべき理由と具体的な使い方
Excelを日常的に使っている方なら、VLOOKUP関数はすでにお馴染みでしょう。VLOOKUPは、同じ行内の一致するテキストをもとに、別のセルから値を検索して取得できる非常に便利な関数です。 まだVLOOKUPに慣れていないという方は、まず基本的な使い方を解説した入門記事を確認しておくと理解がスムーズになります。 しかし、VLOOKUPは強力な反面、参照元の表の構造に制約があるという大きな弱点を抱えています。本記事では、VLOOKUPでは対応できないケースを具体例とともに紹介し、その問題を解決できるINDEX-MATCH関数の使い方を詳しく解説します。 INDEX-MATCHの実例:車のデ
-
JavaでStringの代わりにStringBufferを使うべき理由とは?
Javaで文字列を扱う際、多くの初心者が疑問に抱くのが「StringではなくStringBufferを使う場面はあるのか?」という点です。結論から言えば、文字列を頻繁に変更・連結する処理では、StringBufferの方がパフォーマンスやメモリ効率の面で大きなメリットがあります。 StringとStringBufferの違い StringBufferはスレッドセーフで可変(mutable)な文字列クラスです。複数のスレッドから安全にアクセスできるよう設計されています。 Stringクラスは不変(immutable)であるのに対し、StringBufferクラスは可変です。つまり、生成後もオブ