ゆくゆくは有へと

おかゆ/彼ノ∅有生 の雑記

python

Pythonのスライシングの速度に気をつけて

今日のAtcoderのコンテスト(ABC)で死んだので自戒を込めて。 Pythonのスライシングが遅い話 Pythonのスライシングってリストコピーされるんでしたね……。通りで遅いわけ……。 で、スライシング使わずにdelしたのが次の2つ Submission #1564678 - AtCoder Beg…

Disjoint set を勉強した AOJ #2512222 - Python編

Disjoint Set: Union Find Tree | Aizu Online Judge AOJの解説とは異なり、root が自身へのポインタではなく、その木の集合を持つようにしてある。 当たり前ながら、破壊的更新ができるなら冗長な構造ですけど、ちょっと先のことも踏まえてこうした。 Pytho…

Pythonの非同期通信(asyncioモジュール)入門を書きました

はじめに 非同期処理のことから知らない人向けにPythonくらいしかろくに知らない人間が書きました。せっかくキーワードが文法に組み込まれたんだから理解したいじゃんか! asyncioモジュールを使うための基本的な概念が理解できるようになってるはず、多分。…

input と print を使わずに標準入出力

アホ記事です。 Python の組み込み関数 open はパス渡さずに整数渡すと、そのファイルディスクリプタのファイルオブジェクトを渡してくれます。 言わずもがな(言ってほしい人向け:ファイル記述子 - Wikipedia)、0 を渡せば標準入力から読み取れるようにな…

PythonでUFCSの思案 ver0.001

色々と問題点しかない。たたき台ということで # coding=utf-8 class UFCS: def __init__(self, value): self._value = value def __getattr__(self, name): return lambda *arg, **kwds: UFCS(eval(name)(self._value, *arg, **kwds)) def __repr__(self): r…

threading の同期制御の概念的なメモ

17.1. threading — スレッドベースの並列処理 — Python 3.5.2 ドキュメント Lock まあロックはロックやろ。データの所有権みたいなもの 厳密にはデータの所有権ではなくて、諸々のデータを用いた行動の実行権か。諸々のデータを「一人占め」して安全に行動を…

それっぽい図を書くことで分かった気になるぜ(__init_subclass__)

Python3.6出ましたね! 主要なものとしては 変数アノテーション フォーマット文字列 asyncなジェネレータ クラスカスタマイズ用メソッド__init_subclass__(ディスクリプタの__set_name__も) あたりでしょうか。上2つは割とそのままで、3つ目はそもそもas…

ありふれたクソみたいな記事(シーケンスの速度比較)

括弧が逆ゥ! はてブ見てたらこういうの見つけた: Python簡単実験:内包で何倍高速になるか - TIM Labs 「なんで対話型インタプリタ使ってるんや・・・・・?」という疑問は置いといて、こんなに違うのかとちょっと信じ切れなかったので、自分でも書きました…

初期化が連鎖するダイヤモンド継承は__init__の引数がすべてのクラスで同じときだけにすべき

っていうメモ(あとで詳しく書くかも)。mix in はどうぞ好きなだけ多重継承してください。 なんで? superの関係。

せや!コイツも疲れとるやろしインタプリタ閉じたろ!

1/3の確率で「ンゴwww」と言いながら、その関数を実行せずにインタプリタを閉じてくれるクソムカつく優しいデコレータを作りました。 # coding=utf-8 import random import functools def bebna(function): @functools.wraps(function) def _(*args, **kw…

「実践Python3」の Template method パターンが

「実践Python3」のTemplate methodパターンが ABC組んだだけでほんま草生えるんだけど— 彼ノ∅有生 aka おかゆ (@oka_iu_tcan) December 3, 2016 なんかこれで確信したけど、散々過去に悩んだコレも「実践Python3」の捉え方が変なんだろうってことにしておく…

コーラブルオブジェクトをイテレータ化する

「実践Python3」の一部事項のメモ __call__ メソッドを実装したクラスのインスタンスなり、関数なり、バウンドメソッドなり。コーラブルオブジェクトは呼び出し(とそのときに渡される引数)に応じて何か値を返したり、どっかの内部状態(IOとか自身の属性と…

括弧を憎みすぎた人間の末路(Pythonで関数合成)

本実装はともかく、ちょっと試しにprintしてみたいときあるじゃないですか。そういうときに、 print(f(g(h(1, 2)))) などと、括弧が多すぎて死にそうになることがある。 まあこれくらい我慢しろっても思うんだけど、ちょっと機嫌が悪くてブチ切れた 魔法少女…

「実践Python3」の Prototype と Singleton パターンが

「スーン」って感じで終わってしまってスーン

「実践Python3」の Factory method がもやもやする

題のごとし。 ググって理解したところによれば、factory method って「具象クラスごとに、同種手続き(たいてい抽象クラスで定義されてるメソッド)時に呼び出されるクラス可変的なコンストラクタをメソッド化したもの(で、具象クラス実装時に中身が書かれ…

python でリストのパターンマッチっぽい何か

「実践Python3」のコラム見て、ハッと閃いたのでメモ。(Python3.5) シーケンスのアンパックは引数定義のところでよく使われますね。 def func(*args, **keywords): pass みたいな感じで。アンパックはまだ使いみちがあって、入れ子になったシーケンスの内…

__getattribute__とsuperのメモ

ディスクリプタについて勉強してから10か月くらい前か~ iuk.hateblo.jp qiita.com このQiita記事が公式のHowtoディスクリプタよりも詳しい&分かりやすくてよきよき。特に__getattribute__の中身の擬似コードあるのがいいよね。 Effective Python にはディ…

関数がディスクリプタであることを利用してインスタンスに動的にメソッドを追加する

だからタイトル長くない? kk6.hateblo.jp types.MethodType 使えば個々のインスタンスにメソッドを追加できるんだけど、typesをわざわざ import するのもなって感じにもなる。 で、 qiita.com を読んでたら、関数オブジェクト(こいつは非データディスクリ…

propertyはデータディスクリプタだからインスタンス属性辞書より優先される

タイトル長くない? class C(): def __init__(self): self.x = 10 @property def x(self): return self.__dict__["x"] @x.setter def x(self, value): print("eh-eh") self.__dict__["x"] = value データディスクリプタはインスタンス属性辞書よりもアクセス…

__new__ がわからん

メタクラス関連で__new__の使い方はよくみるけど、クラスレベルでの使い方がぐぐってもあんまりなし。 というところに、以下の記事のコメントでやってることが面白かったので、似たことを検証がてらメモ。 qiita.com class A(): def __new__(cls, value): pr…

メタクラスで@propertyを使ってクラスプロパティをつくる

クラスプロパティってできんのかな~と思って調べていた。 fakatatuku.hatenablog.com なるほどな~と思いつつ、この記事を読み返していた。 postd.cc プロパティって(というかディスクリプタって)、インスタンスの生成元クラスのアトリビュートとして登録…

Effective Python 項目31 メモ ※追記 35

項目31 で、ディスクリプタがクラス属性だから各インスタンス間で共有されちゃうという問題があって、 それに対して、ディスクリプタが保持する状態を辞書にして、各インスタンスをキーとして保管しておこうっていう方策に出ているわけですが、 それだとその…

Nikola を windows でやるぞ [2]

テンプレをみる Nikola のテンプレは…少ない……。Jekyll とかに比べるとそりゃ、まあね。 nikola install_theme [theme name] でインストールできる。 [theme name] はここで探してちょ: Themes for Nikola bootstrap3 系は、bootswatch のカスタムができる…

Nikola を windows でやるぞ [1.5] markdown拡張

ほとんど python-markdown の話かもしれない。 iuk.hateblo.jp もう粗方環境は整ったんだけど、Nikola での markdown の仕様をもう少し見ておかないとなと。 Jekyll では kramdown を使っていたので、kramdown で重宝してた機能があると嬉しみ…とはいえ {:.c…

Nikola を windows でやるぞ [1] gh-pagesにデプロう

iuk.hateblo.jp gh-pages にデプロイするぞ俺は The Nikola Handbook | Nikola "deploying to github" の項もあるし、やっぱりNikolaを、最高やな! conf.py の以下のところ(560行目くらい)を適宜変える。 もっぱら大事なのは2つ: GITHUB_DEPLOY_BRANCH …

myntはpython2でやろうな!

Pelican に愛想をつかした(そもそも愛想費やしてない) mynt を触ってみることにした。当方 python3 mynt – static done simple んだけど、 Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools) これがいるらしい。ダウン…

くろーじゃ

http://www.lifewithpython.com/2014/09/python-use-closures.html?m=1www.lifewithpython.com これみて python のクロージャをおべんきょしてた。 今までは「関数吐く関数やろ?」くらいにしか思ってなかったんだけど、データ保持できるのみてホゲエ~って…

Anaconda が最強すぎる + pymol

Anacondaほんと最強 qiita.com condaが仮想環境もつくれるということで、別途インストールしてたpython2アンスコして仮想環境に作ることにした。 別にそのままでもよかったんだけど、なんか pip が全く作動しないトラブルに見舞われてたんだよね…。 仮想環境…

matplotlibでimportエラー出るンゴ

環境は「Python 3.5.1 |Anaconda 4.0.0 (64-bit)」のデフォルトでふ。 で、この人と同じ症状が出てた。 anaconda 2.4 matplotlib missing pyside · Issue #558 · ContinuumIO/anaconda-issues · GitHub 個人的には、以前まで(いつまでかは忘れた)別窓でグ…

ディスクリプタを個人的にまとめる

参考: デスクリプタ HowTo ガイド — Python 3.5.1 ドキュメント Python を支える技術 ディスクリプタ編 #pyconjp - Qiita ここからどこへ進むか - Dive Into Python 3 日本語版 の項目を上から調べています。 デコレータ、プロパティはまあすんなり理解でき…