PyConJP2017に参加しました
PyConJP2017に参加してきました。1日目が終了したのでとりあえずメモ。
見てきた物リスト&メモ
- ベンリに使おう変数アノテーション - typing.pyとの楽しいお付き合い
- 最近Scalaを始めて型の良さを再認識したところだったので、ある程度Pythonでも享受できそうなのがGoodだなっと思った
- Generic!
- typemarshal是非とも使いたい!
- Pythonとパッケージングと私
- setup.py書いたことはあったんですが、どこかのblogから引っ張ってきただけです🙏
- と思ってソースコード見なおしたらdistutilsが使われててあれ()今度から真面目に書きます…
- Djangoフレームワークのユーザーモデルと認証
- HTTP通信のお話からスタート
普段flask使ってるからdjangoの多機能さが際立って見える #pyconjp #pyconjp_202
— virtual-kabe (@kabe_arm) 2017年9月8日
- len()関数がオブジェクトの長さを手にいれる仕組み
- 何故
obj.length()
ではなくlen(obj)
なのか list
とiter()
とfor
と- Pythonの思想が透けて見える…!
- 何故
- PythonでOAuth『サーバ』を構築した話
- OAuthの規格通り実装するの大変そうだ…
- プロダクト開発して分かったDjangoの深~いパーミッション管理の話
- 2ヶ月前に似たようなところで詰んでいた
- スライドによると自分はLv.2です(?) 自分が実装したのはFlaskだったけど
- 色々ライブラリが出ているあたり悩む人は多いんだなぁ
- Secrets of a WSGI master.
- WSGI気になったので調子に乗って英語講演を聞いたんですがやっぱりアメリカ語わかりませんでした…
その他1
色々ひどいまとめだけど、ひどいついでに試しに実行したやつをそのまま貼り付ける
In [1]: import typing In [8]: def f(arg: List[str]) -> List[str]: ...: return arg ...: In [9]: f(['hoge', 'piy']) Out[9]: ['hoge', 'piy'] In [10]: f([1, 2, 3]) Out[10]: [1, 2, 3] # 実行時型チェックするわけではないのだな(?) IPythonだったからか? In [12]: List[str].mro() # mro()、初知り Out[12]: [typing.List[str], typing.List, list, typing.MutableSequence, collections.abc.MutableSequence, typing.Sequence, collections.abc.Sequence, typing.Reversible, collections.abc.Reversible, typing.Collection, collections.abc.Collection, collections.abc.Sized, typing.Iterable, collections.abc.Iterable, typing.Container, collections.abc.Container, typing.Generic, object] In [13]: List[str].__args__ Out[13]: (str,) In [14]: List[List[str]].__args__ Out[14]: (typing.List[str],) In [15]: Optional[str].__args__ Out[15]: (str, NoneType) In [16]: int in vars(__builtins__).values() Out[16]: True In [17]: class WaruiObj: ...: def __len__(self): ...: return '0' ...: In [18]: len(WaruiObj()) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-18-49ec83f96080> in <module>() ----> 1 len(WaruiObj()) TypeError: 'str' object cannot be interpreted as an integer In [19]: # len() Adapter In [20]: len(1) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-20-8b3587a43b59> in <module>() ----> 1 len(1) TypeError: object of type 'int' has no len() In [21]: # デザインと歴史FAQ In [22]: iter([1,2,3,4]) Out[22]: <list_iterator at 0x7f84595512e8>