【Pythonプログラミング】賛否両論コード 〜どんなコードをどんな理由で書く?〜 初心者向け

Поделиться
HTML-код
  • Опубликовано: 26 авг 2024

Комментарии • 56

  • @user-pg6qe6vf6z
    @user-pg6qe6vf6z Год назад +5

    1つ目はラムダ式で level + (exp >= 100) を返せば簡潔に1行で書けますね。
    是非はともかくPythonではTrue, Falseはそれぞれ1, 0と等価なので。
    if文のなかでいきなり代入するのはPython特有の書き方ですね。宣言のある言語ではifの外で宣言しておく必要がありますし、ブロックスコープの概念もあります。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      なるほどですね!色々な考え方があって面白いです!!

  • @user-wv5lr9em4n
    @user-wv5lr9em4n Год назад +7

    興味深い動画をいつもありがとうございます。
    再代入は引数がミュータブルかイミュータブルかを意識しておかないと、思わぬバグになりかねないので注意が必要ですね。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      コメントありがとうございます😊
      再代入、ミュータブル・イミュータブルを意識してコーディングするのは大切ですね!!

  • @mitsuichi9230
    @mitsuichi9230 Год назад +5

    サプーさんの動画は実務で参考になるヒントがいっぱいで、楽しみにしてます!
    今回のトピックは、日頃もやもやしていた部分、スッキリした気分です! ありがたい!

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      ご視聴いただきありがとうございます!
      あえて結論を出さない動画なので微妙だったかな...って思っていたのですが、そう言ってもらえて嬉しいです!!

  • @pragman3561
    @pragman3561 Год назад +10

    自分はelseは書く派ですが、そのうえで1つ目は何もしないならelse: passにしますね。何もないことを明示したいので。
    (次の問題に再利用する都合でこうなさったのだとは思いますが。)
    再代入とか型ヒントとかは本当は意識したほうがいいんだろうなと思いつつ、1人で研究用途に使ってるだけなので動けばいいや精神ですw

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      ご視聴いただきありがとうございます!色々な意見があって興味深いですね!

    • @kino785
      @kino785 5 месяцев назад

      基本的にelse書かない派だけど書くならこれかなぁ

    • @pragman3561
      @pragman3561 23 дня назад

      動けばいいやはだめだとサプーさんに怒られてるので動画見て頑張って勉強します!笑

  • @comgmail9290
    @comgmail9290 Год назад +2

    プログラミングの考え方や思想、実務者としての経験談をまとめた
    このような動画は、とてもありがたいです!

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      ご視聴ありがとうございます!少しでも参考になれば嬉しいです!

  • @yamayama774
    @yamayama774 Год назад +1

    サプーさん、いつもありがとうございます。
    美しい声質と話し方、そして明瞭で美しい日本語が子守唄に聞こえます。よく分からないことがあっても、何か楽しいな。聞いていて頭の良い人だなーと羨ましく思います。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      ありがとうございます!!全然、頭が良いということはないのですが、分かりやすさを大切に動画作りしています😊

  • @user-tz3nq5fj9c
    @user-tz3nq5fj9c Год назад +2

    過去にCOBOLをやってた時は、網羅的に書く事が多かったです。誰が見ても分かりやすいからという理由でしたが、今は営業職なので自分勝手に書いてます。
    Pythonはインタプリタだから少ないコードの方が処理が早い気がしますね🤔

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      言語やチーム開発・個人の趣味かどうかなどによっても書き方が違ってくるかもですね!

  • @hiroyama3975
    @hiroyama3975 Год назад +1

    今まで再代入の考えは気にしたことなかったです。ありがとうございます。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +3

      再代入は一度気にしだすとすごく気になるようになります笑 
      考えのきっかけになれてたら嬉しいです!

  • @user-daiMiyazaki1940
    @user-daiMiyazaki1940 Год назад

    Python 未経験です。某ミノ駆動本にかぶれている箇所が多々ありますが、自分はこうなりました。
    ①else文は不要。書くとしても再代入せず pass 文で書くべき。
    ②正直、再代入は避けたい。
    ③早期 return は必須。網羅性を言うのであれば空のelse文で書いてネストを浅くするべき。
    ④型は明示してほしい。

  • @sattoman
    @sattoman Год назад +4

    こういうとこは自然言語も同じですね、文脈が明確なら省略された物言いでも伝わるけど、そうでなければ事細かに説明しないと食い違いが起きてしまう
    開発に関わるメンバー人数や、SWの更新サイクルによっても答えは変わってきそう

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      そうですね!メンバーの人数・入れ替え頻度、組織の文化も含めて色々な要因でベストものは変わってきそうですね!

  • @user-ub9yv7mo7r
    @user-ub9yv7mo7r Год назад +3

    今度Python認定実践試験受けます!
    サプーさんの動画参考にします!

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      認定試験すごいです!!うまくいくよう応援しています😊

    • @user-ub9yv7mo7r
      @user-ub9yv7mo7r Год назад +1

      @@pythonvtuber9917
      ありがとうございます😭
      動画ほんとに参考になります!

  • @user-yk9fu3kg8u
    @user-yk9fu3kg8u Год назад +2

    タイプアノテーション昔付けてなかったけど今はガッチガチにつけてるなー
    VS Codeの補完がめっちゃ便利になる!

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +3

      分かります!!タイプアノテーションは私も初めは面倒くさがって付けてなかったのですが、一度使ってみると便利じゃん!って思って常に付けるようになってました笑

  • @user-jx2tw2yx6d
    @user-jx2tw2yx6d Год назад

    現在大学でパイソンを使っています。そのため、たくさん動画を視聴させてもらっています。わかりやすい動画で参考になっています!これからもお体に気を付けて動画投稿頑張ってください!微力ながら応援しています!!

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      大学のプログラミング授業でPythonを使っているのですかね!すごいです!!
      ありがとうございます😊少しでもお役に立てていたら嬉しいです!

    • @user-jx2tw2yx6d
      @user-jx2tw2yx6d Год назад

      @@pythonvtuber9917 律儀に返信ありがとうございます!授業で利用しています!

  • @MikuHatsune-np4dj
    @MikuHatsune-np4dj Год назад +1

    「バグの温床を出来るだけ減らす」ポリシーで良いと思います。おっしゃる通りタイプアノテーションするくらいならnimとか使います。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      確かにポリシーを決めていれば、どっちの方がバグが発生しないか?って考えやすくていいですね!

  • @hr14w
    @hr14w Год назад +1

    こういうのって新人時代にどんなコードを刷り込まれたかで分岐しますね。。。
    網羅的なコードはいいと思いますが、たくさんのコードを書いてるとその精神を貫けなくなるのでやっても良いけどまぁ、頑張れ!って感じです。
    再代入はやめておいた方が他の言語に行ったときに変な癖にならないし、同じ変数に対しての処理が散らかるとバグ対応が大変になります。
    よくあるステータスというアチコチで参照される変数でそれやるとバグりやすい。
    逆にマスキング処理やフィルター処理などのクレンジング処理では再代入した方がコードがスッキリしてかつ処理が集約されるので、やったほうがいいケースもありますね。
    型を明示するかって件についてもやっておいた方が他の言語へ移った時のショックが少ないし、エディタ補完が楽になるっていのもあるのでやっておいた方がいいですが、網羅的なコードと同じく沢山のコードを書いてるとその精神が貫けなくなりますね。
    なのでユーティリティのような目的がわかりやすいコードは省略して型が重要になりそうなモデルクラスには書くといったルールにするとまだらなコードにならなくて済みますね。
    なのでどっちか統一というより適材適所で手を抜くのが良いという結論ですが、どっちか決めないとヤダっていう勢力の時は仕方なく決めてます。。。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      コメントありがとうございます!色々な考えがあって面白いですね!!

  • @KJIUYHN
    @KJIUYHN Год назад

    とても勉強になりました。2つ目の再代入を許すべきかどうかという議論の存在を初めて知りました。1つ目の問題は、様々な言語の掲示板で目にします。私はelseを書きません。しかし、人数の多いプロジェクトによっては、書いたほうが良いということにもなりました。3つ目のreturnは、私も使います。追跡する必要のない処理を早めに潰しておいたほうが、読みやすく不具合の混入が少ないと経験的に感じています。4つ目について、これも不具合の発生を防ぐ意味で使うことになりました。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад

      ご視聴いただきありがとうございます!
      そうですね、掲示板やTwitterなどでも度々議論になっていますね!何を重視するかでどっちを取るかが決まるって感じですかね!

  • @user-oo8ue3wy6p
    @user-oo8ue3wy6p Год назад

    いつも解説して頂きありがとうございます!毎日勉強させてもらってます!
    現在PythonモジュールのKivyの勉強してます!Kivyをつかってアプリ開発についての解説をしていただければ嬉しいです!!!
    よろしくお願いします!!!

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад

      kivyのご要望ですね!ありがとうございます、検討してみますね!

  • @user-hc8td3qw9b
    @user-hc8td3qw9b Год назад +2

    私の考え方はミニスカートと同じで、短い方のが好みです。
    つまり、三項演算子による記述を第一に考えます。

  • @fkazake
    @fkazake Год назад +2

    ~個人的な回答~
    1つ目・3つ目:docstringに書く か should_level_up(exp: int, th: int = 100) -> boolを定義してelseブロックを省略。書く量はむしろ増えるが、コードが見やすくなる。
    4つ目:結局代入する型や役割を間違えると使い物にならないので書く。また、戻り値のクラスを明示しておくと an_inst = build_an_inst() のような代入でエディタがan_instのメンバをサジェストしてくれることがある。静的型付けのすべてを知っているわけではないけれどan_inst: AClass = ...としなくてもこれができるのは強み。一方で代入時のアノテーションはエディタがクラスを判別不可能な場合を除いて省略。
    2つ目:難しい。必要に応じて使う。破壊的にはならないようにする。今回の例ならnew_levelを用意する派。

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +1

      個人的な回答ありがとうございます!色々な考えがあって面白いです!!

  • @user-yk7qo5nl4p
    @user-yk7qo5nl4p Год назад

    各問題で比較されていたコードはどちらが正しいではないにしても、サプーさんの観測範囲内でどちらの書き方が多いのかは気になった

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад

      どっちの書き方が多いかを言うと、そっちの方が正しいかのように受け取られかねないので控えさせてもらいました!

  • @sugar1173
    @sugar1173 Год назад +1

    写経動画をあげていただけると助かります。

  • @kingyosuba
    @kingyosuba 11 месяцев назад

    型アノテーションを書かないのはあり得ない選択肢ですね
    アノテーションをつけるっていう簡単な作業だけで型に関する実行時エラーを大幅に減らせるんで、テスト工程まで考えれば全体の時間を大幅に削減できます
    型を書かない方が面倒くさいです

  • @trevelyan0113
    @trevelyan0113 Год назад

    関数の引数にタイプアノテーションつけないとIDEのインテリセンスが効かなくて、フィールドやメソッドのアクセスがダルい。あとは保守性から考えても型付け派だなー

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад

      そうですね!私もPythonでタイプアノテーション使う派です!でも使いたくない派の人の気持ちも分かります笑

  • @BaBa-pb2te
    @BaBa-pb2te Год назад

    コードにコメントをちゃんと書くと大抵は解決しそうですが、後からコメントを書くのって面倒いですよね

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад

      そうですね、コメントがたくさんあるコードは読みにくいですしね...😵

  • @nokky9824
    @nokky9824 Год назад +1

    早期リターンにelseつけたらメリット台無しやん…
    と思ってしまう

  • @maruta3262
    @maruta3262 Год назад +1

    2つ目の再代入が嫌なら定数でいいじゃない!と思ったけどPythonって定数をサポートしていないんですねw

    • @pythonvtuber9917
      @pythonvtuber9917  Год назад +2

      そうなんです!言語仕様として再代入が不可能な定数として扱えるようなものはサポートしてないんです...

  • @Unmo1234
    @Unmo1234 Год назад

    아무래도 짧은 코드가 좋아.. 연산 사이클 아낄 수 있으니깐..