kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

python

『Pythonプロフェッショナルプログラミング 第3版』

Pythonプロフェッショナルプログラミング 第3版 作者: 株式会社ビープラウド 出版社/メーカー: 秀和システム 発売日: 2018/06/12 メディア: 単行本 この商品を含むブログを見る 突然購入して突然読み始めましたほとんど衝動買いなんですが強いて言えば仮想マ…

ジェネレータ(続き4)

そうかー木もこうやってジェネレータにできるんだーと思いましたとさ 確かどこかでそういうのやりたかったけどあきらめた気がする 見つけ出してリベンジしたい たぶんこのへんで思ったのかな(記憶なし

ジェネレータ(続き3)

まだ、yield fromっていうのが残ってた When yield from is used, it treats the supplied expression as a subiterator. (yield from <式>が使われると、与えられた式はサブイテレータとして扱われる) と言われてもよくわからなかったんだけれども 別のジェ…

ジェネレータ(続き2)

一応わかった気になったけど どこで止まるかをしっかりイメージできないと応用が効かない気がする さらに細かく書いてみた def gen(): print("before yield") y = yield 1.0 print("yield 1.0 returned", y) y = yield 2.0 print("yield 2.0 returned", y) y…

ジェネレータ(続き)

何をすればわかった感が出るんだろうか それもわからないのでランダムにいろいろ試してみよう returnはどうなるんだろうか

ジェネレータのお勉強

どうもジェネレータがちゃんとわかった感ないので調べる たいていgoogleで検索してQiitaとかで済ませるんだけど 今回は公式ドキュメントから見てみよう

PEP 483を読む(続き7)

Pragmaticsってなんだ 語用論?でいいの? 型が期待されるところではNoneはtype(None)とみなされる 型エイリアスが使える 前方参照には文字列を使う デフォルト値としてNoneを指定すると、Optional型を指定したことになる

PEP 483を読む(続き6)

covariant・contravariantを使って型変数の共変・反変を宣言できます。デフォルトでは型は不変です。 不変というのは変だろうと思ってたけど PEP 484の翻訳記事を読んでみたら

結局PEP484も読んでいる

PEP483、どうも読んでてわからないところが出てきたのでPEP484の日本語訳も読んでいる 元はと言えばこのPEPに > 漸進的型付けや型システム全体のことはPEP 483で説明しています。 って書いてあるのを見て483から読み始めたわけだけれども(PEP 482まではさす…

PEP 483を読む(続き5)

共変性(Covariance)と反変性(Contravariance) t2がt1の部分型であるとき、総称型コンストラクタGenTypeはこう呼ばれます。 - 共変 ― すべてのt1、t2においてGenType[t2]がGenType[t1]の部分型であるとき - 反変 ― すべてのt1、t2においてGenType[t1]がGenTyp…

PEP 483を読む(続き4)

総称型の定義と利用 特別なビルディングブロックであるGenericを使ってクラスを総称型として宣言できます。class MyGeneric(Generic[X, Y, ...]): ...で型変数X等に関する総称型MyGenericを定義します。 このGeneric[X, Y, ...]っていうのは継承とは関係なく…

PEP 483を読む(続き3)

型変数 X = TypeVar('X')で一意の型変数を宣言できます。名前は変数名と一致しなくてはなりません。デフォルトでは、型変数は可能なあらゆる型をとることができます。 uniqueを一意と訳したけれども何がuniqueなんだろう 同じ名前で2回は宣言できない、くら…

PEP 483を読む(続き2)

総称型(Generic types) 上で定義された基本的なビルディングブロックにより、ジェネリックな形で新しい型を構築することが可能となります。たとえば、Tupleはfloatを取って具体型Vector=Tuple[float, ...]になり、また、UserIDを取って別の具体型Registry=Tu…

PEP 483を読む(続き)

以下、英語のTypeを型と訳すか、タイプとカタカナにするか、それともTypeのままにしておくか悩ましい感じがしています型って書くほうが普通かもしれませんがタイプとしてみました

PEP 483を読む(続き)

漸進的型付け(Gradual Typing) 漸進的型付けとは、プログラムの一部だけをアノテートすることで動的型付けと静的型付け双方の望ましい側面を強化するものです。 つけるとよさそうなところだけ型を明示する

PEP 483を読む

型ヒントをもうちょっと勉強しておこうPEP 484よりもPEP 483の方が読む分には楽で面白く読めそうな気がするのでそっち読む

実験:関数オーバーロード(続き)

pythonは型ヒントを無視するのでこうなるしかないんですけど どうしてもオーバーロードするなら自分で型を判定する ていうかUnion型があるってことはもともとそういうものってことかな

実験:関数オーバーロード

せっかく型情報つけるんだから関数がオーバーロードできるといいなあ

カバレッジを計測する

テスト書いたらカバレッジも計測してみたい この間なにかでPythonではCoverageというツールで計測できるというのを見た pip installでインストールして $ pip install coverage ... Successfully installed coverage-4.5.2 coverage runでカバレッジを計測 $…

Pythonのクラスで謎の現象

こんなクラス作ってですね

寄り道:Type Hint (続き)

少し遊ぶ ヒントに合わない型を返してみるとか >>> def greeting(name: str) -> int: ... return 'Hello ' + name ... >>> あれ?

寄り道:Type Hint

ちょっと調べたほうがいいかもな ということで調べてたら型ヒントっていうのが出てきた 26.1. typing — 型ヒントのサポート — Python 3.6.5 ドキュメント Python3.5から使えるみたいだからAOJでも使える System info | Aizu Online Judge こういうもの