はじめに
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が一般的にどのようなスタイルでインポートされているか確認できました。
この調査が皆さんのプロダクト開発のお役に立てれば幸いです。
以上です。ありがとうございました。