ごらすみっちスマートフォン用の表示で見るぴたごらすみっち2019-08-19python注意点まとめ思うところあってpythonを真面目に勉強したので、ハマったことなどまとめ。DRFizzBuzzとブラックジャックとヒープツリーを実装してみたインデントを揃える。falseが推奨らしいFizzBuzz短いのでインラインで。慣習的なものはよくわからないけど多分そんなに違わないと思う。FizzBuzzとなる。ブラックジャックプログラミングのステップの1つとしてブラックジャックを実装してみるのがいいみたいなので書いてみた。こっちもレギュレーションをきちんと確認していないので雰囲気で実装。コードはここにhttps://github.com/smitch/python-practice/blob/master/blackjack.py結構楽しいので、時間があるときにもうちょっと詰めたい。カードカウンティングとかも面白そう。unittestブラックジャックを書いた後にunittestが標準であることに気づいた。unittest.TestCaseを継承したクラスを作成して、メソッド名がtestで始まるメソッドを実装すればunittest.main()を呼び出すだけでテストメソッドを実行してくれる。メソッド名がtestで始まるメソッドを実装すればよい。(大事なことなので2回言いました)継承してメソッド実装すると、実装したメソッドを自動実行するっていうのも面白い仕様だと思った。時間があるときにunittestの実装もみてみよう。pythonの実行時に-vオプションを付けることでテストの情報が出力される。ドキュメントヒープツリー実装そこそこ真面目なヒープツリー実装のはず。python標準ライブラリのheapqはリスト実装だけど、今回はグラフを使ったツリー構造での実装。https://github.com/smitch/data_structure_and_algorithm/blob/master/tree/heap_tree.pyiteratorとyieldyieldを使うと明示的に状態を持たなくてもiteratorが実装できる。yieldでヒープツリーのDFSを実装するとこんな感じ。StopIteration最初、yieldはreturn的な動作だと思ったが、returnとは切り離して考えた方が良さそう。yieldの流れは、yieldを使うメソッドを呼び出すと、generatorが返ってくる。得られたgeneratorのnext(next)メソッドを呼び出すことで、実際のメソッドの中身が実行される。for文と合わせて使うと自然に使える。特殊な感じがするけど、慣れると便利そう。name>にてドキュメントが生成される。モジュール名はファイル名から.pyを除いたものpycheckpipでインストールする。name>にて構文のチェックを行なえる。細かい設定はまだ追えていない。pylintとかも調べたい。styleの2つがあるらしい。styleを参考にした。https://github.com/google/styleguide/blob/gh-pages/pyguide.mdvar_dumppprint.pprint(vars(a))などでインスタンス変数の一覧を出力できる。内部的にはvarsはa.__dict__を出力している模様。printを実行すると__str__が呼ばれる。特殊属性、メソッドは把握しきれていないので、きちんとまとめたい。このサイトはかなり参考になった。0とFalseを区別したい場合には使えない。変数とNoneの比較はしてはいけない。NoneはTrueでもFalseでもない。人工的な例だけど下のようなコードを書くとハマる。False!"python2とpython3の違いここまでやってみて気づいた点printがpython2では構文だがpython3では関数イテレータの次の要素の取得がpython2ではnextだがpython3では__next__python2ではprintで末尾に必ず改行が入る。今後やりたいことassertに引っかかったらプログラム停止して、インタラクティブモードになるようにしたい。どこかのサイトに実装があったはず。python環境の新規構築ができないpython注意点まとめスピードキューブで1分以内に揃えられるようになった月別アーカイブはてなブログをはじめよう!smitchさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。