タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

型ヒントとPythonに関するknj2918のブックマーク (18)

  • [Python]循環importになるケースでも型アノテーションができるケースがある、という話 - Qiita

    TL;DR Pythonで2つのモジュール間でお互いにimportしており、且つその中でのクラスなどの型アノテーションをエラーにならずに対応できるケースがあるよ、という話です。 使う環境 OS: Debian GNU/Linux 10 Python 3.6 ※個人で趣味で作っているPythonライブラリの最低バージョンの3.6に合わせているので新しいPythonバージョンではもしかしたら話が変わってくるかもしれません(そろそろPython 3.6のサポートを切っても良いかもですしね・・・)。 悩ましいPythonの循環importのエラーの話 他の静的型付け言語だと特に気になったりしないのですが、Pythonだと2つのモジュールでお互いにimportしあう形になっているとImportErrorになったりすることがあります。例えば以下のようにsample_A.pyというモジュールとsampl

    [Python]循環importになるケースでも型アノテーションができるケースがある、という話 - Qiita
  • Pythonでゆるく始める静的型検査 - Qiita

    TypeScriptを一年程楽しく書いていたのですが、1ヶ月程前から業務でPython3を触ることになりました。 Pythonは簡潔にかけて楽しいものの、他の人から引き継いだ箇所もあり、開発していて型がないのが辛くなってきました。 一番つらいのはコードリーディングしていて、この関数は何を返すのか? とか、この変数は何が入ってるのか、とかひと目見て分からないこと。……ドキュメントとしての型が無いことです。 無いなら導入しようということで、型アノテーションとmypyを導入することにしました。 いきなりガチガチに型を導入しても逆に辛くなるので、型のない状態から無理せず型を導入していく方法を取り、結構うまく導入できたので、今回はその時の手順や得られた知見、Tipsを紹介しようと思います。 環境 今回はpipenvの環境でテストしていますが、mypyに付いてはpip等でも特に変わらないと思います。

    Pythonでゆるく始める静的型検査 - Qiita
  • 型ヒントが提供されていないpythonライブラリにmypy用に型ヒントを入れる - Keep on moving

    最近mypy趣味で使い始めたのでいろいろ書こうと思います。 @tk0miiyka さんの記事を読んでとりあえず自分の仕事mypy使えそうなところをいろいろ考えてみた 対象バージョン version python 3.5.2 mypy 0.4.6 last update 2017.01.08 TL;DR pyiファイルをつくれば世の中の型ヒントが提供されていないプロジェクトに型ヒントをつけられる。 まーでも結構めんどいので、みんなでtypeshedを育てていくのがよさそうです。 GitHub - python/typeshed: Collection of library stubs for Python, with static types mypyって? こちらの素晴らしい記事を読んだほうがいいですね。 qiita.com 要はPython3.4以降で使える静的型チェッカーらしい。個

    型ヒントが提供されていないpythonライブラリにmypy用に型ヒントを入れる - Keep on moving
  • PythonにおいてannotationsとTYPE_CHECKINGで循環参照を防ぐ

    はじめに Python で annotation(型付け)を付けていると、循環参照に陥ることがあります。 循環参照とは以下のようにモジュールの参照がループしてしまうことを指します。 モジュール A がモジュール B を参照 モジュール B がモジュール A を参照 a.py from b import B class A: def __init__(self): pass if __name__ == '__main__': a: A = A() b: B = B(a) 最初から型を付けながら設計・プログラミングする場合は、循環参照を起こさないように留意できます。 しかし、すでに何年も前に作られたライブラリに対して型を新しく付けようとすると、問題が発生します。 これは、型定義をしているモジュールをインポートしようとすると、相互参照になることがあるためです。 Python は型がなくても 実

    PythonにおいてannotationsとTYPE_CHECKINGで循環参照を防ぐ
  • Robust(頑強)なPythonコードの書き方

    以下の書籍を通じて学んだRobustなPythonコードについてまとめる GitHub 1. まとめ Robustnessの必要性 If your software is “good enough,” why add even more complexity? To answer that, consider how often that piece of software will be iterated upon. Delivering software value is typically not a static exercise; it’s rare that a system provides value and is never modified again. Software is ever-evolving by its very nature. The codebase

    Robust(頑強)なPythonコードの書き方
    knj2918
    knj2918 2023/01/31
    Type Annotationsの使い所については色々な考え方があると思うが、必ずしも全ての変数につける必要はない。
  • Pythonと型チェッカー

    2. 自己紹介 ● 森 哲也 – twitter: @t2y ● ポータルサイトの会社 – オブジェクトストレージの開発・運用 ● 業務では Go 言語で開発 – 普段使いのツールやプロトタイピングに Python ● エキスパート Python プログラミング改訂2版 – Python 3.5 ( 翻訳は 3.6) を対象 3. 最近のニュース ● Pyre: Fast Type Checking for Python – 概要から引用 Facebook 社も Instagram 社も大規模に Python を使っています。私たちは Python の表現力、 柔軟性、開発における生産性をとても好んでいます。しかし、数百万行といった大規模コード ベースの保守を考えると、そういった良いところにも陰りがみえてきます。 ● 静的な保証がないと、既存のコードベースを安全に変更することが難しくなり

    Pythonと型チェッカー
  • Python3.6の概要(その2 - 変数アノテーション) - atsuoishimoto's diary

    変数アノテーション PEP 484 -- Type Hintsで導入された型ヒントが、モジュールのグローバル変数や、クラスのインスタンス変数などにも指定できるようになった。PEP 526 -- Syntax for Variable Annotations 変数の型アノテーションは、mypy などではコメントとして指定するようになっていたが、Python3.6以降では、正式なPythonの構文で指定できるようになった。 >>> SPAM:str = 'global spam string' # SPAM は str型グローバル変数 >>> class Ham: ... EGG: int = 100 # EGGはint型クラス変数 この例では、代入文で変数を作成するのと同時に型を宣言しているが、変数の値を指定せずに、変数の型だけでも宣言できる。この場合は代入文では使用せずに、 >>> SPA

    Python3.6の概要(その2 - 変数アノテーション) - atsuoishimoto's diary
  • Python と型アノテーション

    K YamaguchiEngineer, Hose Husband at Tohoku University, Inui-Okazaki Laboratory

    Python と型アノテーション
  • Python の型ヒントと typing と mypy | 民主主義に乾杯

    めちゃくちゃ長いですが 変数や属性に代入されるオブジェクトの型名を書く という、ただそれだけの話です。 # 1. はじめに 型ヒントの書き方については mypy のマニュアルにチートシートがありました。 わかる方は、直接こちらをご参照ください。 Type hints cheat sheet (Python 3) - mypy (opens new window) また型ヒントをいつ使うのか、と言った 「使い分け」 、型ヒントが登場した 「背景」 については、 以下の記事にまとめました。記事の後編にあたります。 動的言語と静的言語ってなに? この記事では主に 「書き方」 と 「使い方」 について、書いていきます。 # 1.1. 型ヒント 変数に代入される型の名前です。 正確には違います。引用先の用語集をご参照ください。

  • Error codes enabled by default - mypy 1.11.2 documentation

  • [翻訳] PEP 0484 -- 型ヒント (Type Hints) - Qiita

    これらのアノテーションは実行時に普通の __annotations__ 属性として参照できる一方で、 実行時には型チェックを行いません 。その代わり、この提案は独立したオフライン型チェッカーの存在を仮定しています。ユーザーはそのような型チェッカーを使って自主的にソースコードを検査できます。基的にこういった型チェッカーは非常に強力なリンター (linter) として機能します。(もちろん似たようなチェッカーを使って個々のユーザー向けに契約による設計 (Design By Contract) の強制や JIT 最適化を実行時に行うこともできるはずですが、そういったツールはまだ実用レベルにはなっていません。) この提案は mypy [mypy] に強く触発されています。例えば、"整数型のシーケンス" の型は Sequence[int] のように記述します。角括弧を使うことで言語に新しい構文を追

    [翻訳] PEP 0484 -- 型ヒント (Type Hints) - Qiita
  • Python と型ヒント (Type Hints) - forest book

    先日、Python の静的型チェッカーとして mypy を紹介しました。 mypy で静的型付け Python プログラミング - forest book 私には難しくてまとめきれないため、Guido が参照している漸進的型付け (Gradual Typing) も含め、また別の機会に、、、。 とか言っているうちに1ヶ月ほど経ってしまいました。 そうこうしているうちに PEP のドラフトも出てきたので区切りとしてまとめておきます。一通り調べたことを基にして書いていますが、私の誤解や勘違いもあるでしょうから怪しいところがあったら調べ直してみてください。もちろんツッコミも大歓迎です。 型ヒント (Type Hints) を導入するという提案 PEP 483 - The Theory of Type Hints | Python.org PEP 484 - Type Hints | Python

    Python と型ヒント (Type Hints) - forest book
  • [翻訳] Python の静的型、すごい mypy! - Qiita

    稿は 2016年10月13日 (木) に Tim Abbott 氏によって書かれた記事の翻訳です。 Static types in Python, oh my(py)! https://news.ycombinator.com/item?id=12703008 免責事項/Disclaimer 稿は 非公式 の翻訳記事です (著者の Tim Abbott 氏に翻訳を公開することの確認は取っています) 。稿の内容に関して Tim Abbott 氏と Dropbox 社は一切の責任を負いません。 誤訳などありましたら私宛に編集リクエストを送って頂けると助かります。 謝辞 @takada-at に誤訳の指摘をコメントで頂きました @shimizukawa から誤訳修正の編集リクエストを頂きました @cocoatomo は全体を通して誤訳修正、より分りやすい日語の表現にしてくれました 私の拙

    [翻訳] Python の静的型、すごい mypy! - Qiita
  • mypy駆動リファクタリング - Qiita

    はじめに Pythonは動的型付けのプログラミング言語です。そのため、実行時に型に関するチェックが実行されません。その結果、“動的型付けであるがゆえに問題がない処理”が存在してしまいます。それらは、ある時点で外部から観測される振る舞いに問題がなかったとしても、リリースを重ねていくうちにに不具合として顕在化する可能性があります。 そのような処理に対して、mypyによりコードにおけるリファクタリングをすると良い箇所を特定できます。mypyPythonで静的型チェックを実行するツールです。 例えば、以下に該当するような、コードの検知が可能です。 型ヒントの不足 型の矛盾 つまり、mypyの出力に基づくリファクタリングでは以下の効果が期待されます。 処理の内容を型ヒントで補足することによる可読性の向上(潜在的な不具合を埋め込む可能性の解消) 型が矛盾している処理を修正することによる堅牢性の向上(

    mypy駆動リファクタリング - Qiita
  • Pythonではじまる、型のある世界 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Pythonではじまる、型のある世界 - Qiita
  • 2021年版Pythonの型ヒントの書き方 (for Python 3.9) | フューチャー技術ブログ

    Pythonに型ヒントが入ってからしばらく経ちます。型ヒントの立ち位置も、なんでもできるアノテーションとして導入されましたが、型ヒント以外の用途はあまり育たず、型ヒントが中心になり、PEPや仕様もそれに合わせて変化したり、より書きやすいように機能が追加されてきました。 エントリーでは、Python 3.9時点での最新情報を元に、現在サポート中のPythonバージョン(3.6以上)との互換性の情報も織り交ぜながら、最新の型ヒントの書き方を紹介します。 エントリーの執筆には、Pythonの型の有識者の@moriyoshi、@aodag、@tk0miya にアドバイスをもらいました。ありがとうございます。 環境構築Visual Studio CodeVisual Studio Codeの場合は、事前にどのインタプリタを利用するかを設定しておきます。その環境にインストールします。venvを使う

    2021年版Pythonの型ヒントの書き方 (for Python 3.9) | フューチャー技術ブログ
  • 型ヒントの5年間を振り返る

    第1特集 データ型を正しく説明できますか?� 静的型付け/動的型付け言語の違い 第3章:Pythonでも型チェックしよう�型ヒントの概要を押さえる 漸進的型付けとは型ヒントとは型チェッカーとはProtocol と Structural subtyping

    型ヒントの5年間を振り返る
  • Python の型チェックが 400 万行に到達するまで

    Dropbox は、Python のビッグ ユーザーです。Python は、バックエンド サービスとデスクトップ クライアント アプリの両方で最も広く使用されています(Dropbox は GoTypeScriptRust のヘビー ユーザーでもあります)。 Dropbox の Python コードは数百万行にも及ぶ規模となっていますが、その動的型付けによってコードが必要以上に理解しにくくなり、生産性に深刻な影響を与えるようになりました。 これを軽減するため、現在私たちは最も普及している Python スタンドアロン型チェッカー、mypy による静的型チェックにコードを徐々に移行しています(mypy はオープン ソース プロジェクトであり、そのコア チームは Dropbox 内に設立されました)。 Dropbox は、この規模での Python 静的型チェックを導入した最初の企業の一つで

    Python の型チェックが 400 万行に到達するまで
  • 1