You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
筒井(@ryu22e)です。今月の「Python Monthly Topics」は、型チェッカー「Pyrefly」を紹介します。 Pyreflyの概要と特徴 PyreflyはMeta社が開発した型チェッカーです。ロゴがホタル(firefly)をイメージしたデザインで、「パイアフライ」と発音します[1]。 Pythonの型チェッカーといえばMypy、Pyrightなどの既存ツールがありますが、Pyreflyにはそれらにはない以下の特徴があります。 Rustで実装されているため、高速に動作 WASM版もあるため、ブラウザ上で利用可能 コードに自動で型ヒントを付ける機能 Meta社製の型チェッカーといえばPyreがありますが、PyreflyはPyreの後継ツールです。Pyreflyが誕生した経緯については、以下のMeta社のブログに詳細が書かれています。 Introducing Pyrefly
型チェッカーの歴史と性能比較について少しだけ掘り下げます
はじめに Pythonは動的型付けのプログラミング言語です。そのため、実行時に型に関するチェックが実行されません。その結果、“動的型付けであるがゆえに問題がない処理”が存在してしまいます。それらは、ある時点で外部から観測される振る舞いに問題がなかったとしても、リリースを重ねていくうちにに不具合として顕在化する可能性があります。 そのような処理に対して、mypyによりコードにおけるリファクタリングをすると良い箇所を特定できます。mypyはPythonで静的型チェックを実行するツールです。 例えば、以下に該当するような、コードの検知が可能です。 型ヒントの不足 型の矛盾 つまり、mypyの出力に基づくリファクタリングでは以下の効果が期待されます。 処理の内容を型ヒントで補足することによる可読性の向上(潜在的な不具合を埋め込む可能性の解消) 型が矛盾している処理を修正することによる堅牢性の向上(
Photo by Alice Donovan Rouse on UnsplashDynamic typing, which means that the type of a variable is determined only during runtime, makes Python flexible and convenient. However, every coin has two sides. Messy typing of variables is usually the root of hidden bugs. Robust programs should be type-safe. Therefore, Python provides the typing hint feature since version 3.5. This feature is a good trad
はじめに みなさん、PythonのType Hints使ってますか? Pythonは動的型付き言語なので、明示的に型情報をつけずにコーディングできることがメリット、と感じされている方もいらっしゃるかもしれません。 その意見はもっともなのですが、型を明示的に指定することで、よりバグを発生させにくいコーディングができることも事実かと思います。 本記事ではPythonの型についての入門~中級の内容を扱います。 皆さんのPythonスキルアップの一助となれば幸いです。 注意事項 Pythonの静的型解析にはmypyというライブラリが必要ですが、mypyの使い方、インストール方法などについては解説しません。 ステップ1:基本的な変数の型[イミュータブル] 変数の型の書き方は下記の通りです。
はじめにMypy や Pyright は Python の静的解析ツールとして有名ですが、これら2つに解析情報でどのような違いがあるのかわからなかったので、実験することにしました。Pyright は Mypy に比べて後発のプロジェクトですが、性能面で優れているなどとして徐々に注目を集めています。 https://github.com/python/mypy https://github.com/microsoft/pyright 解析以外での比較はこちらが参考になります。 https://qiita.com/simonritchie/items/7492d1c1a3c13b2f27aa#%E4%BA%8B%E5%89%8D%E3%81%AEpyright%E3%81%AE%E8%BF%BD%E5%8A%A0 実験概要Mypy、Pyright はともに reveal_type(expr)
2021/10 追記 Pyannotate はメンテナが居なくなったため更新が途絶えました。またより表現多く typing を反映できるため、これからは Monkeytype を推奨します。 この記事は何か Python Advent Calendar 2020の 2 日目の記事です(元々 13 日目でしたが、2 日目の参加者が取りやめたので横入りしました)。「Python コードに自動で型を付与し、その型をテストで静的チェックして、保守性を高める方法」をご紹介する趣旨の記事です。 書いた理由 今回紹介するメインツールの pyannotate について、日本語で紹介している記事がほとんどなく、かつ古い情報が多かった為です(python3 サポートがない時代かつ、pytest との連携ができなかった時代)。「Python において型はいるのか?」という議論はしません。 今回紹介するツールは以
例えば以下の様な関数helloがあるとする。可変長引数を使って定義されている。とてもtrivialな例ではあるけれど説明用なので。。 from typing import Any def greet(prefix: str, *, name: str) -> None: print(f"{prefix}, {name}") def hello(**params: Any) -> None: greet("hello", **params) ここでhelloを呼び出す際に以下のようにtypoしたとする。これをmypyなどの静的解析で検知したい。 # TypeError: greet() got an unexpected keyword argument 'nam' hello(nam="foo") TypedDict 仮に可変長引数の部分全体をDictとして見るような定義だったら上手くいく
#stapy https://speakerdeck.com/yamitzky/mastering-type-safety-in-python-3-dot-9-era の内容を加筆して削ったものです
この記事は Go 4 Advent Calendar 2020 1日目の記事です。 激しい議論を呼んだことで有名な Go 2 の type generics は、Go 2 → Go 1 translator である "go2go" を介して既にお試しできる状態になっている。 この記事は、Go 2 における type generics のありようについて述べたり議論したりするものではない。お試しできるようになった今、それがどのような雰囲気で、どのように実用できそうかといった個人的感想を紹介する。どうぞ気軽に読んでほしい。 tl;dr Type generics の使い心地は思ったより良い 各種制限も妥当に設定されているように思える Go 1 に translate されたソースコードの見た目は素朴で直感的 今まで冗長に書かざるを得なかった部分を安全に短くするのに使えそう Python の i
はじめに みなさん。Pythonで型書いてますか?最近は型の重要性を再認識しているので、皆さんにもぜひPythonで型を書いて頂きたいと思ってこの記事を書きました。 注意事項として今回の記事では下記の事項については言及しません。 型チェックツールの導入方法(mypy,pyrightなど) 今回の内容は以前の書いた記事の補足内容となっていますので、以前の記事ももしよければ参照ください。 実践!!Python型入門(Type Hints) そもそもPythonでなぜ型を書くのか? Pythonは動的型付き言語なので、型を書かなくてもプログラムは動きます。型を書かないことで、コードの量は少なくなりますし、初学者にとっても習得しやすい言語となっていることはメリットかと思います。 ただし、ある程度の行数のコードを書く場合、プログラムを複数人でメンテナンスする場合、型がないと以下の様な問題が発生する。
Python Types Intro¶ Python has support for optional "type hints" (also called "type annotations"). These "type hints" or annotations are a special syntax that allow declaring the type of a variable. By declaring types for your variables, editors and tools can give you better support. This is just a quick tutorial / refresher about Python type hints. It covers only the minimum necessary to use them
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く