nikkie-ftnextの日記

イベントレポートや読書メモを発信

Python core

パッケージを pip install して生えるコマンドの実体は、シバンでPythonを指定したテキストファイルでした

はじめに 書類に、なりたい... nikkieです。 真珠星ちゃんの「養子縁組って……」くらいの衝撃の事実を、Pythonで知ってしまいました。 目次 はじめに 目次 pip installするとコマンドが生える コマンドの実体 シバン 落穂拾い 正規表現は何? pipx install 終…

私はどうやってスタイルガイドに沿ったPythonを書けるように近づいてきたんだっけ

はじめに Understand? Understand! nikkieです。 先日Pythonスクリプトをスタイルガイドに合わせる方法を書きました。 そこに入り切らなかった事項をまとめたエントリです。 スタイルガイドに沿ったPythonを自分の手で書けるようになっていきたい方に捧げま…

Pythonの抽象構文木で、関数の引数の型ヒントはどのように表されるか(None, ast.Name, ast.Subscript, ast.Attribute)

はじめに 狂気のLTしちゃった...✌️ nikkieです。 先日、琴葉ちゃんと一緒にいたい 世の中のPythonコードの関数の引数の型ヒントをよりPythonicにしたい一心で flake8-kotohaをリリースしました。 この中で関数の引数の型ヒントの抽象構文木を触っての学びを…

Python 型ヒント:オリジン 〜Python 3.5で導入された時点の型ヒントって、実は〜

はじめに ふふっ、nikkieです。 ふだんから書いているPythonの型ヒント。 この出自について知ったことをまとめます。 目次 はじめに 目次 まとめ Python 3.0 「PEP 3107 – Function Annotations」 Python 3.5 「PEP 484 – Type Hints」 Python 3.6 「PEP 526…

あれ? Pythonでimportしただけなのに、SyntaxError?

またオレ何かやっちゃいました? 目次 目次 用語確認:importしただけなのに、SyntaxError 事件現場 Python 3.7以降でasyncが予約語に asyncが予約語、OSSに見つけた事象 終わりに P.S. 構造的パターンマッチとソフトキーワード 用語確認:importしただけなの…

小ネタ:inline script metadataをサポートしたツールで実行するPythonスクリプトは、同じディレクトリのモジュールをimportできる

はじめに グルクン、くくるちゃんを幸せそうな表情にしたので、しゅき... nikkieです PyCon JP 2024でPEP 723(inline script metadata)の話をしてきました。 発表後に気づいた小ネタです。 目次 はじめに 目次 別のPythonファイルからのimportをサポートし…

Pythonでネストしたfor文の途中で抜ける(ジェネレータの出番です)

はじめに 取り繕ってばかりの自分が 誰よりも嫌いなんだ♪ 『未完成のポラリス』よすぎる、nikkieです。 みんなのPython勉強会#108のご参加、ありがとうございました。 懇親会で出た話題の1つに、アンサーブログを書きます。 目次 はじめに 目次 ネストしたfo…

Pythonの型ヒントに変数も使えたのか!typing.TypeVarの使い方の一例を理解

はじめに あゆあゆ、お誕生日おめでとうございます! nikkieです。 Pythonの型ヒントの中でいかついなと感じていたtyping.TypeVarと仲良くなる一歩目を踏み出せたと思います! 目次 はじめに 目次 型ヒント入門で見かけるコード(2つの文字列を引数に取り、…

Pythonのone obvious way 〜The Zen of Pythonを訪ねて〜

はじめに たった一人の、私の友達... nikkieです。 この記事では The Zen of Python を訪ねます。 目次 はじめに 目次 The Zen of Python 『パーフェクトPython[改訂2版]』 石本 敦夫さんブログ The Zen of Python はジョーク 落穂拾い 感想(終わりにに代…

Pythonにはif文と条件式があります(『Rustの練習帳』著者への手紙)

はじめに 麻衣さああああああああんん!!!! 鹿児島に来ているnikkieです。 行きの飛行機の中で『Rustの練習帳』を読んでいました。 これは大変面白いです!!(今後の1日1エントリで回収されるでしょう) 読んだ範囲で1点だけ、Pythonに関して著者との間…

田中琴葉ちゃんをPythonにやらせよう。「引数の型ヒントをlistにしてはいけません」と伝えるスクリプトを作る

こちらのツイート解題です #技書博 で頒布する内容、「ASTを扱えば実装できる(書籍とは別に、ライブラリとしても表現できる)よな」と思い、https://t.co/1drZAcpfXZアイデア検証は完了(gistのコード)https://t.co/3izj81T8Ez結論:琴葉ちゃんは、作れる…

イベントレポート | #技書博 10で小冊子『引数の型ヒントをlistにしてはいけません』を頒布しました

ありがとうございました!! け-04 Everlasting Diaryに来ていただいた方、誠にありがとうございました #技書博立ち読みされる方には途中から「Pythonで型ヒント書いてますか?」と聞くようにし、そこで色々伺えたので更新の方向性が見えた気がします。フィ…

5/12(日)の #技書博 10でPythonの型ヒントについての小冊子を頒布します(け-04)。『引数の型ヒントをlistにしてはいけません』

はじめに 控え室で 野球をしては いけません1 nikkieです。 タイトルが全てです! 5/12(日)の技書博10で、サークル「Everlasting Diary」はけ-04に出展してます 目次 はじめに 目次 『引数の型ヒントをlistにしてはいけません』 行こうぜ!技書博10 終わりに…

flake8(pycodestyle)には、二項演算子と改行について、排他的なルールがある(W503とW504)

はじめに 枕木の歌、いいよね... nikkieです。 flake8を触っていての気づきを書いていきます。 目次 はじめに 目次 相互に排他的な W503 と W504 2つある経緯は、PEP 8の変更 顕在化するのは、--ignoreオプションと使った時 終わりに P.S. Ruffでは? 相互に…

PythonでOptional型の型ヒントは Optional[X] と X | None 、どちらがいいのでしょう?

今の私の結論を言うと、好みです。 Union[X, None] という3択目もありますが、好みだと思います。 はじめに ミリシタの馬場このみさん1もよろしくね、nikkieです。 表題の件について、綴っていきます。 多少のただし書きを加えていますが、要は「好みです」…

懺悔:Pythonでクラスの継承を書くとき、super(self.__class__, self)は決してオススメしません(無限に再帰しちゃうよ)

はじめに オーイシおにーさん、ありがとうううううう!! vol.2おめでとおおおおおお!! nikkieです。 自作のSphinx拡張を例に、Pythonにおける継承について書いていきます。 やってはいけない事象の共有になります(俺みたいになるな!) 目次 はじめに 目…

pip installとpython -m pip install、pytestとpython -m pytestは何が違う? python -mとsys.pathの秘密

はじめに Act-4、最高だった... 余韻の真っ只中のnikkieです。 表題の件について、違いを知ったので記します。 鍵を握るのはsys.pathです 目次 はじめに 目次 pytestのドキュメントより sys.pathのドキュメント 結論:pytestとpython -m pytestはここが違う…

Pythonの内包表記のifの位置

こういう見方ができるな〜と気づいたのでしたためます。 目次 目次 Pythonの内包表記 チュートリアルより、リスト内包表記の例 用語集より 言語リファレンス 式より 内包表記のifの位置に注目する forより後のif forより前のif まとめ:Pythonの内包表記のif…

Pythonで例外を文字列中に出力するときは、str()ではなくてrepr()に渡すのがオススメです

目次 目次 百聞は一見に如かず(タイトル回収パート) 例外をstr()とrepr()に渡して返り値の文字列を比較しよう 違いが顕著な例:何も渡さずに例外を初期化する print()についてもreprを介しましょう tips:f-stringは!rでrepr 執筆の背景:str()で出力した…

Pythonのlen()関数はデザインパターンのAdapterパターン、なのでしょうか?(もやもやを自分の中で決着させるための記事)

はじめに PyCon JP 2017に素晴らしい発表があります。 プレゼンテーション:len()関数がオブジェクトの長さを手にいれる仕組み | PyCon JP 2017 in TOKYO #pyconjp 2017のスライド。タイトルに興味惹かれ、知的興奮のパレードでした。lenやboolはAdapterパタ…

Pythonの組み込み型にlenメソッドはなくて、長さを知るときにlen関数を使うのはなぜ? Guido氏の意向に迫る

Pythonは歴史が長いので、色々な方がその理由を解説されていますが、私も自分の言葉で説明したくなったので一本書きます。 その理由は、生みの親(かつての慈悲深き終身独裁者)Guido氏の意向です。 Guido氏の考えを覗きに行きましょう。 目次 目次 デザイン…

Pythonで例外を捕捉するときに、except:やexcept BaseException:と書いてはいけません。except Exception:またはもっと具体な例外クラスを指定しましょう

はじめに RAISE THE DREAM!!! nikkieです。 ミリアニ12話を思い出すだけで泣ける身体にされてしまった1のですが、今回は技術ネタ。 Pythonでraiseするものといったら、例外!2 Pythonの例外の扱い、具体的に言うとtry ... exceptのexcept節について取り上げ…

イベントレポート | 『Python Distilled』試飲会、公式ドキュメントのどこに書いてあるでしょうクイズが大変面白かった! #bpstudy

はじめに 今できないことがあっても大丈夫✊ nikkieです 近況ですが、11/30からはミリシタのオレンジノキオク イベントでUR 葉月恋状態です そんな11/30に『Python Distilled』の試飲会に参加していました。 ちなみに11/30はGuidoさんmeetupに参加した後、会…

温故知新!「ソート HOW TO」で知ったDecorate-Sort-Undecorate(key引数がある今、これを使う必要はないわ)

この記事はPython Advent Calendar 2023 12日目にしちゃいます!先行するんだ はじめに そーーーっ nikkieです1。 私はPython公式ドキュメントが大好きでしょっちゅう入り浸っています。 そんなドキュメントの中から、PythonのソートについてDecorate-Sort-U…

SQLでいう「ORDER BY columnA DESC, columnB ASC」のようなソートは、Pythonではどう書く? 安定性を利用した複数回ソート または keyに指定した関数で負の数値を含むタプルを返す

はじめに ミリアニ7話は水着回! nikkieです1。 表題の疑問について、GPTから始めていくつか文献に当たったのですが、「ソート HOW TO」というドキュメントがめちゃ簡潔に回答していて感動したので一本したためます。 目次 はじめに 目次 前提:key引数を使…

openai-pythonの実装を見てPEP 661を知り、sentinel valuesの多様な実装が結びつきました(クラス・Enum・ウォルラス)

はじめに 背伸びのVenus♪1 nikkieです。 ライブラリopenai-pythonの素振りに励むnikkie氏。 「利用者が〇〇と書くだけで、なんでこんなことができちゃうんだろう」と気になったところは、ソースコード(裏の仕組み)も手短に確認します。 そんな中で新たに知…

デスクリプタ素振りの記:ユーザが(object.__setattr__を持ち出しても)属性に代入できないMoneyクラス

はじめに デスクリプタ完全に理解した! nikkieです(※エンジニアの"完全に理解した"はすぐ分からなくなるやつです) 先日のみんなのPython勉強会#98のLTをきっかけに興味を持ったデスクリプタについて素振りしました。 ※触り始めで深い理解はこれからですし…

Pythonの関数で可変長引数(*args、**kwargs)の型ヒントはどう書く?

関数本体では可変長位置引数(args)はタプル、可変長キーワード引数(kwargs)は辞書として扱われます。 これらの型ヒントには タプルの要素 辞書の値 の型を書けばよいです はじめに 三重さん(のメガネ)はおうちに飾れる!1 nikkieです タイトルの件が気…

Pythonでtypeの返り値を型と比較する(例:valueがint型か知りたいときにtype(value) == intとする)のはいかんぜよ

はじめに ぶっぶーですわ!‍♂️1 nikkieです。 表題の件について見ていきましょう。 某書籍レビューでお見かけして、記憶に刻まれた思い出があります。 目次 はじめに 目次 動作環境 flake8 「ぶっぶーですわ!」 なぜダメか ー サブクラスを考慮しないから …

非同期ジェネレータ 素振りの記(OpenAIのAPIに並行処理でリクエストを送る処理を書き直す)

はじめに みんな、目黒シネマへ行くんだ。特別上映版『かがみの孤城』が観られるぞ! nikkieです。 ここ数日Pythonの非同期ジェネレータが頭に引っかかっています。 難しそうな概念ですが、「ついにその時が来たか」と腹を決めて素振りしました。 ※考え違い…