静かなる名辞

pythonとプログラミングのこと

ネタ・小ネタ

共有渡しと参照の値渡しと

はじめに 関数やメソッドに引数を渡す方法は、一般的には 値渡し 参照渡し の2通りがあると認知されている。 ところで、『参照の値渡し』という言葉も(ほぼ日本語Web圏限定で)存在する。これは「いわゆる『参照渡し』は参照自体を書き換えるんじゃなくて、…

【python】immutableなオブジェクトは1つしか存在しないという迷信

たまに誤解している人がいるので、書いておく。 pythonのオブジェクトにはimmutableという概念がある。これはオブジェクトが変更不可能であるということを示す。intやstr, tupleなどが代表的なimmutableなオブジェクトである。 オブジェクトがimmutableであ…

【python】反転させて先頭n個取るスライス

タイトルの通りのものが必要になりました。一体どう書くのでしょう? とりあえず反転させる >>> lst = list(range(20)) >>> lst[::-1] [19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] ま、これは常識(python廃人の皆さんには)。…

【python】その矛盾した__eq__は・・・

私は疑問を持った pythonでは比較演算子==を使うと、内部的には__eq__メソッドが呼ばれる。 ここから、素朴な疑問が生じる。比較演算子は二項演算子なので、2つのオブジェクトに対して適用される。 どちらのオブジェクトの__eq__が呼ばれるのだろう? また、…

有意水準5%の論文が100本あったら

この記事は思いついたままに書いたポエム。 有意水準5%とは、その判断(主張)の妥当性が95%である、ということを意味する。よって、有意水準5%で検定したら、100回に5回は第1種の過誤を犯す。 有意水準5%の論文が100本あったら、(いちおうすべての論文が正…

【python】sliceのちょっと深イイ(かもしれない)話

リスト(じゃなくてもだけど)に次のようにアクセスするとき、内部的には__getitem__が呼ばれていることは、歴戦のpythonistaの皆さんには常識でしょう。 >>> lst = [1,2,3,4,5] >>> lst[0] 1 この様子を自作クラスで観察してみましょう。 >>> class Hoge: .…

【python】改行せずに代入文と等価のことをする

pythonワンライナーを書く上で障害になるのは、代入文の存在である。代入は関数ではなく文なので、素直に書くと一行を消費してしまうし、lambdaやコレクション型の中にも入れられない。 よく知られた対策としては、変数辞書を直接書き換えるという大技がある…

【python】関数オブジェクトは辞書のキーに使える!

「まさかできねーだろw」と思ってやったらできたのでびっくりしたよ! >>> def hoge(): ... return None ... >>> {hoge:1} {<function hoge at 0x7f025f18cf28>: 1} ||< えぇ…(困惑)。 lambdaでもできる。 >|python| >>> fuga = lambda:None >>> {fuga:2} {<function <lambda> at 0x7f0243880510>: 2} hogeと</function></function>…

【python】The Anti-Zen of Pythonの和訳

The Anti-Zen of Pythonというネタがある。そもそも「The Zen of Python」というpython使いの過半数が知っているネタがあるのだが、それに反対する怪文書である。Welcome to that’s documentation! — that 1.0.7 documentation the zen of pythonはデフォル…

【python】気持ち悪いリスト内包表記のサンプルたち

最終更新:2018-4-21 この記事は思いつく度に加筆していこうと思う。 二回評価されるのを避けたかった numpy配列がなんだ!俺がやってやる! forのよさを殺していくスタイル 2018/3/30 追記 リスト内包表記でファイル出力 無限ループ リスト内包表記で走査し…

【python・ネタ】importする順番

PEP8はimportに際し、次の順番でimportしろと規定している。 import文 は次の順番でグループ化すべきです:1.標準ライブラリ 2.サードパーティに関連するもの 3.ローカルな アプリケーション/ライブラリ に特有のもの 普通はこの通り書けば何の問題もないと思…

なぜpython使いは単純なfor文より醜悪なリスト内包表記を好むのか

煽りっぽいタイトルだが、この記事は真剣である。リスト内包表記にはpython哲学の本質に関わる問題が潜んでいる。 python使いはリスト内包表記を好む。他の言語の使用者なら「for文で書きゃ良いのに」と思うような処理を、リスト内包表記で書くことを好む。 …

【python】pythonでボゴソートしてみる

みんな大好きボゴソート。愚直に実装するならそんなに面倒なことはない。 import random def bogo(lst): while True: random.shuffle(lst) xb = lst[0] flag = True for x in lst[1:]: if xb > x: flag = False break xb = x if flag: return None 色々イケ…

【python】pythonでもprintf/scanfしたい!

最終更新:2018-04-10※注意! この記事はネタ記事です。この記事に書いてある方法でpythonからprintf/scanfを使うことはできますが、実用性は保証しません。 実用的な方法を知りたい方は、こちらの記事にアクセスしてください。 hayataka2049.hatenablog.jph…