Pythonで文字列の長さに対するmax/minを取る

Pythonにおける文字列の大小比較はどのように行われるのか。それは文字列を先頭文字から順に比較して、Unicodeコードポイントが大きいほうが大きいと扱われる。

>>> max('abcde', 'efg')
'efg'

長さを比較したい場合は関数len()を用いて文字列長に変換する。組み込みのmax/minに長さの比較を行ってもらいたい場合、keyに関数を指定することによって行える。

>>> max('abcde', 'efg', key=len)
'abcde'

例題として、ファイルの中の一番長い行を得るプログラムlongest.pyを書いてみる。

def longest_line(filename):
    with open(filename) as f:
        return max((x for x in f), key=len)