2012年9月15日

Python の文字列フォーマットには format メソッドを利用するべし

概要

Python 2.6 以上を利用しているのに未だに %演算子(モジュロ)を利用した方法で文字列をフォーマットしているサンプルがネットでは出てきますが、はっきりいって古いのでやめましょう。
format メソッドを利用するべし。

format メソッドに関して

PEP 3101 -- Advanced String Formatting」で仕様が定義されている。

サンプル

あまり丁寧ではないが、とりあえずサンプル。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest


class TestStringFormat(unittest.TestCase):

    def test_basic(self):
        """基本的なサンプル
        型を意識しなくても良い
        名前付き指定が可能
        """
        a = 21
        b = 'フルマラソン'
        d = 42.195
        self.assertEqual('21日のフルマラソンは 42.195km です。',
                         '{0}日の{1}は {c}km です。'.format(a, b, c=d))

    def test_object(self):
        """クラスも使える"""
        class SampleModel(object):
            def __init__(self):
                self.id = 1200
                self.name = '永遠'
                self.age = 17

        model = SampleModel()
        self.assertEqual('永遠は17歳',
                         '{model.name}は{model.age}歳'.format(model=model))


if __name__ == '__main__':
    unittest.main()

結論

プログラミング言語は発展しているので、最新の機能は勉強して、利用するとかなり便利だったりする。
不便におもっている事は単に知らないだけ、ということも結構ある。それだと損だと思う。

blog comments powered by Disqus