Day21
@charset.setter def charset(self, value): self._charset = value def serialize_headers(self): """HTTP headers as a bytestring.""" def to_bytes(val, encoding): return val if isinstance(val, bytes) else val.encode(encoding) headers = [ (to_bytes(key, 'ascii') + b': ' + to_bytes(value, 'latin-1')) for key, value in self.headers.items() ] return b'\r\n'.join(headers) __bytes__ = serialize_headers
def serialize_headers(self)の中に、この関数の中だけで使用する関数を書いている。
それがdef to_bytes(val, encoding)
・ return val if isinstance(val, bytes) else val.encode(encoding)がreturn のところに一行でif-else文をかけるのが凄い。
headers はリスト。その中で、上記で書いた関数を足し合わせている。リストの中に、リスト内包表記。
返り値がheaderのリストを改行して返す。
__があるのは特殊メソッド。よーわからん。このserialize_headersを特殊メソッドにしちゃうよって感じかな?わっかんね。
Pythonのif __name__ == "__main__" とは何ですか?への回答 - Python学習チャンネル by PyQ