nikkie-ftnextの日記

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

Python core

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の非同期ジェネレータが頭に引っかかっています。 難しそうな概念ですが、「ついにその時が来たか」と腹を決めて素振りしました。 ※考え違い…

openai-pythonでAPIのレスポンスをresponse.choicesともresponse["choices"]とも書けるのはなぜ? OpenAIObjectは辞書を継承したクラスだったのです

はじめに 『かがみの孤城』円盤発売まであと6️⃣日、nikkieです。 openai-pythonライブラリに関する小ネタです。 目次 はじめに 目次 APIのレスポンスの扱い方 OpenAIObjectは辞書を継承している OpenAIObjectインスタンスで.を使えるのは__getattr__を実装し…

openai-pythonライブラリで得たChat Completionのレスポンス全体をprintすると日本語が読めない事象の原因と対策

はじめに 公式さんもアドカレ参戦♪ 『かがみの孤城』円盤発売まであと7️⃣日 nikkieです。 先日のFunction callingのエントリで積んだ宿題に取り組みました。 目次 はじめに 目次 Function callingのエントリの宿題 なぜコードポイントで表示される? 寄り道…

Pythonのcsvモジュールのドキュメントにあるopen(..., newline="")のススメ、やっと意味分かった...(改行文字を変換するか否かの指定)

はじめに 映画『聲の形』を久しぶりに観ました、nikkieです。 Pythonのcsvモジュールのドキュメントで、長いことよく分からなかったのですが、ようやく意味が取れた箇所があります。 その点について共有します。 目次 はじめに 目次 ずっと分からなかった、o…

Pythonでリソースファイルと一緒にパッケージをインストールする指定は3つある 〜うち、include_package_dataとpackage_dataについて〜

はじめに サァン!!! nikkieです。 Pythonのパッケージに.py以外のファイルを含める設定について先日アウトプットしました。 知ったことを自作パッケージに適用しようとしたところ、ほかの設定方法もあることが分かりました。 深まった理解を元にアウトプットし…

Pythonでリソースファイルと一緒にパッケージをインストールするための設定値(📣MANIFEST.inが必要です)

はじめに みんなの中に私はいない1 nikkieです。 Pythonのパッケージに.py以外のファイルを含めたいことってありますよね。 これに必要な設定についてのアウトプットです。 なお、.py以外のファイルを指して、タイトルで「リソースファイル」と書きました。 …

Pythonのジェネレータ関数の返り値の型ヒントを考える

はじめに ニュージェネレーションズ! nikkieです。 Python使いのみなさん、ジェネレータ使ってますか? 私は多用しています、もう手放せません! そんなジェネレータ(を返す関数)の型ヒントについてアウトプットします。 目次 はじめに 目次 ジェネレータ…

Pythonの型ヒントのうち、typing.TypeGuardの使い所を完全理解しました

はじめに ともりるありがとうーーーー!!!1 nikkieです。 『ロバストPython』でtyping.TypedDictを知り2、便利なことに気づき、書く型ヒントをちょっとずつ増やしています。 mypyを使った型チェックで少し理解が進んだ点があったのでアウトプットします。 …

Pythonの内包表記、ifを複数並べて書けた...だと...(初めて知って相当の衝撃)

あ...ありのままに今起こったことを話すぜ! ※今回は特別編です 目次 目次 そもそもことのはじまりは ifを複数使った内包表記、動くんです! 言語リファレンスの構文定義を確認 終わりに そもそもことのはじまりは 金曜日のミノ駆動本_読書会(7章 コレクシ…

Pythonのイテラブルとイテレータ 〜for文の秘密〜

はじめに 京都リサーチパークにて開催のYAPC::Kyotoでノベルティを受け取りし参加者の1人、nikkieです。 Pythonはクラスに特殊メソッド1を定義することで、インスタンスに特別な振る舞いをさせることができます。 今回は、インスタンスをfor文で使えるように…

PythonのUnionまわりの型ヒントの書き方を整理する(Python 3.9と3.10が|が使える境目です)

はじめに 京都リサーチパークにて開催のYAPC::Kyotoでノベルティを受け取りし参加者の1人、nikkieです。 Pythonの型ヒントは進化が早く、Python3系のマイナーバージョンアップで型ヒントの新たな書き方が導入されることが多いと感じます。 Python 3.9と3.10…

PythonのASTと戯れる第一歩:文字列リテラルを全部置き換えてみる

目次 目次 きっかけ 今回の参考文献 できたもの:コード中のすべての文字列を置き換え ドキュメントメモ parse / unparse dump NodeTransformer Constant きっかけ 昨日参加したYAPC::Kyoto 2023。 その中のASTのトークに触発されました いくつか例を見せて…

Python使いはpip freezeの出力を常にrequirements.txtというファイルに保存する? 文献を調べたところいくつか流派があるようです

はじめに 答えはYesですか? nikkieです。 ふときっかけがあり、Python使いは皆pip freeze > requirements.txtするのか文献調査しました。 わかったことを現在のバックアップとしてまとめます。 目次 はじめに 目次 きっかけ 念のためのおことわり 暫定的な…

Pythonのif文の書き方ってどう説明します? 言語リファレンスの具象構文の世界の紹介、そしてその先へのいざない

この記事は、Python Advent Calendar 2022 25日目の記事です。 Python Advent Calendar 2022は現在4つに冗長化しており、24日目は saosao885さんによる「DataFrame型?Datatable型と違うの?と指定範囲のデータ取得を練習します。」 u1and0さんによる「OSS開…

Pythonで「x == y は x.__eq__(y) を呼び出す」とドキュメントにあるけれど、継承が絡むと成り立たない!?

はじめに 『アイの歌声を聴かせて』、公開1周年おめでとう! 都内では立川、新宿、下北沢、田端で上映するので、見に行ける全人類はみんな見て!ゼッタイ見て!!1 nikkieです。 Pythonの==演算子と特殊メソッド__eq__について、Python言語リファレンスの記…

『Effective Python 第2版』項目23に感じたひっかかりを機に関数の引数を復習しました

はじめに 「みんな、ウタだよ!」、nikkieです。 PyCon JP 2022が近づいてきました。 私は10/14(金) 13:50〜「Pythonとアスタリスク 」というトークをします。 発表準備の中で気になったトピックをブログにアウトプットしちゃいます! 目次 はじめに 目次 『…

8/18(木)のみんなのPython勉強会 #stapy 非同期処理特集に向けて asyncio を予習するのです

はじめに 非同期処理に関するトークが大集合!nikkieです。 スタッフもしているみんなのPython勉強会、8月は非同期処理に関するトークが3本です! 非常に楽しみなのですが、「ぶっちゃけasync/awaitってあんまり使ったことないんだよね」という後ろめたさが…

1月の #stapy で挙がった2つの質問に回答します:キーワード専用引数はいつから? 位置専用引数の使い所は?

はじめに 秘密はね、最後に明かされるんだよ。nikkieです。 まず1スタッフとしてお礼を。 1/27(木)開催のみんなのPython勉強会、ご参加ありがとうございました。 「いろんなPythonを探検しよう」というテーマで、 Pythonという言語のここ5バージョンの変遷 …