5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
沖津さんの投稿
(投稿ID: 5366)
疑問が出てきたので質問します。
3日前の日付を作る場合
以下の2パターンで書いてみたところ
結果はどちらも同じ3日後の日付を作れました。
❶ new_dt = dt + timedelta(days=-3)
❷ new_dt = dt - timedelta(days=3)
わたしは引き算なのだから
❷の書き方の方が良いのかなと思ったのですが…
ネットで調べてみると❶の方法で書かれている方が多い印象でした。
❶の書き方の方が好ましいのでしょうか?
それとも、どちらの書き方でもOKなのでしょうか?
小川 慶一さんのコメント
(コメントID: 7726)
> ❶の書き方の方が好ましいのでしょうか?
せっかくなので、今日の学びを活かしてみたいです。
「❷の書き方支持」ということであれば、あえて、「❶の書き方支持」の立場になってみて、その理由を考えて書き出してみてください。
あと、ついでに、せっかくなので、python のソースコードで datetime の __add__, __sub__ メソッドの実装を眺めてみてください。
沖津さんのコメント
(コメントID: 7736)
学びのヒントを出していただきありがとうございます。
❶ new_dt = dt + timedelta(days=-3)
❷ new_dt = dt - timedelta(days=3)
「➊の書き方支持」立場で考えると…
timedelta(days=-3) と書く方が
・減らしたいもの … days
・どれだけ減らすか? … -3
この2つか( )でまとまっているので
パッと見た時に何をどうしたいのか?が
わかりやすいと思いました。
୨୧・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・୨୧
datetimeのソースコードも眺めてみました!
何が書いてあるのかはさっぱりだったのですが💦
じーーーっと眺めていると
マイナス記号はtimedeltaの()の中でしか
使われていないことに気が付きました。
逆にtimedeltaの()以外の部分の計算は
プラス記号が使われていたので
だんだん❶の書き方の方が良い気がしてきました。
小川 慶一さんのコメント
(コメントID: 7738)
>・減らしたいもの … days
>・どれだけ減らすか? … -3
>
>この2つか( )でまとまっているので
>パッと見た時に何をどうしたいのか?が
>わかりやすいと思いました。
ですね。
というか、 timedelta オブジェクト内にそこまでの情報を含められれば、 datetime との演算の式を作るときに、プラス「 + 」にするか、マイナス「 - 」にするか、と悩む必要がなくなります。
ある程度のボリュームのコードになってくると、 datetime と timedelta との演算は、 timdelta オブジェクトを生成した直後になるとは限りません。
timedelta オブジェクトを作るタイミングは、コードのかなり前の方かもしれません。
あるいは、呼び出された関数内で生成される可能性もありそうですね。
その時、 timedelta オブジェクトの方が正負まで含めた情報を持つようにして
最終的に datetime との演算をする部分では、以下のように + 演算子で書くことにする
とする方が実装がシンプルで済みます。
と、この説明でさっぱりしっくり来るでしょうか?😆
ソースコードは、最初は、読める範囲で、で構いません。
文法知識と実装の経験がついてくると、だんだんと、より読めるようになっていきます😊
「読んでみよう」という意図と、「読んでみた」という体験が重要です。
沖津さんのコメント
(コメントID: 7743)
ありがとうございます😊
datetime との演算の式を作るときに、プラス「 + 」にするか、マイナス「 - 」にするか、と悩む必要がなくなります。
☝これもコードを書くときにラクになるほうがいいので納得です!
あとから修正する場合も
❶の書き方の方が探しやすいと思いました。
ソースコードについても
よくわからないからといってすぐ閉じずに(笑)果敢にながめるようにします。
ありがとうございました😊