はじめに
Pythonでdatetimeモジュールをインポートする際に、Webで調べてみると様々なスタイルでインポートされていることが分かります。
import datetime
import datetime as dt
from datetime import datetime, timedelta, ...
from datetime import datetime as dt
これは、
-
import numpy as np
やimport pandas as pd
のように、datetimeをdtと省略したい - datetime.datetime を直接インポートしたい
といった考えによって生まれたスタイルだと思われます。
厳密には datetime と datetime.datetime は別物ですが、datetime.datetime しか使わない場合には下2行のスタイルが使われることも多いかと思います。
しかし、自身でスタイルが統一されていないと、datetime という文字を見たときに、datetime と datetime.datetime のどちらなのかややこしくなるでしょう。
そこで、自身のプロダクト開発においてdatetimeのインポートスタイルを統一したいと考え、githubの有名OSSを調べることで、一般的にどのスタイルが多く使われているのか調べてみることにしました。
各OSSの調査方法
今回は、githubでスター数の多いPythonレポジトリを参考にして、それぞれどのようなスタイルでdatetimeをインポートしているのか確認していきます。
https://github.com/search?l=Python&q=stars%3A%3E1&s=stars&type=Repositories
こちらのページの上からそれぞれのレポジトリで import datetime
で検索して確認していきます。
調査結果
datetimeをインポートしているOSSについて、そのスタイルをまとめました。
ついでに、Python公式Docsについても調べてみました。
import datetime | import datetime as dt | from datetime import datetime | from datetime import datetime as dt | |
---|---|---|---|---|
docs.python.org | ◯ | |||
TheAlgorithms/Python | ◯ | |||
jackfrued/Python-100-Days | ◯ | ◯ | ||
ytdl-org/youtube-dl | ◯ | |||
tensorflow/models | ◯ | ◯ | ||
nvbn/thefuck | ◯ | |||
django/django | ◯ | ◯ | ||
pallets/flask | ◯ | ◯ | ||
httpie/httpie | ◯ | |||
ansible/ansible | ◯ | ◯ | ||
huggingface/transformers | ◯ | ◯ | ||
scikit-learn/scikit-learn | ◯ |
学んだこと
実際にOSSを調べてみたことで、以下の点について学ぶことができました。
- ほとんどのOSSが
from datetime import datetime
を採用している -
- Python公式Docs、scikit-learnなどは
from datetime import datetime
の形式のみを採用している
- Python公式Docs、scikit-learnなどは
-
import datetime
とfrom datetime import datetime
が混在しているOSSも多い -
as dt
は使われていない
そこで、私自身の結論として、
- 基本的には
from datetime import datetime
のスタイルを採用する - どうしても必要になったときには
import datetime
を使用することとする
というスタイルを採用しようと思います。
おわりに
githubの有名OSSを調査することで、datetimeが一般的にどのようなスタイルでインポートされているか確認できました。
この調査が皆さんのプロダクト開発のお役に立てれば幸いです。
以上です。ありがとうございました。