PyCharm の型ヒント
PyCharm は、スクリプト内のオブジェクトのタイプのインスペクションとチェックを支援するさまざまな手段を提供します。PyCharm は、typing
モジュールと PEP 484(英語) で定義された形式を使用して、関数アノテーションと型コメントで型ヒントをサポートします。
型ヒントを追加する
PyCharm は PEP 484(英語) でサポートされているタイプを追加するためのすべてのメソッドをサポートしていますが、インテンションアクションによる型ヒントを使用するのが最も便利です。使用するインタープリターに応じて、型はアノテーション(Python 3)またはコメント(Python 2)として追加されます。
型ヒントを追加するには、次の手順を実行する
コード要素を選択します。
Alt+Enter を押します。
型ヒントを追加 ... を選択します。
適切な場合は、Enter を押してアクションを完了するか、タイプを編集します。
サンプル | インテンションアクション | アノテーションの結果コード (Python 3) |
---|---|---|
変数 | ![]() | ![]() |
関数 | ![]() | ![]() |
クラス属性 | ![]() | ![]() |
サンプル | インテンションアクション | コメントの結果コード (Python 2) |
---|---|---|
変数 | ![]() | ![]() |
関数 | ![]() | ![]() |
クラス属性 | ![]() | ![]() |
Python スタブを使用して、変数、関数、クラスフィールドの型を指定することもできます。
コメントの変換
コメントベースの型ヒントの場合、PyCharm は、コメントベースの型ヒントを変数アノテーションに変換できるインテンションアクションを提案します。このインテンションには変数アノテーションに変換するという名前があり、次のように動作します。
前 | 後 |
---|---|
from typing import List, Optional
xs = [] # type: List[Optional[str]]
|
from typing import List, Optional
xs: List[Optional[str]] = []
|
型ヒントの検証
型ヒントを適用するときはいつでも、PyCharm は、サポートされている PEP に従ってタイプが正しく使用されているかどうかをチェックします。使用箇所エラーがある場合、対応する警告が表示され、推奨されるアクションが提案されます。以下は検証の例です。
検証エラー | 推奨アクション |
---|---|
型宣言の重複。 ![]() | いずれかの型宣言を削除します。 |
型宣言の引数の数は、関数の引数の数とは異なります。 ![]() | 引数の数を調整します。 |
アンパックを伴う型コメントは、対応するターゲットと一致しません。 ![]() | ターゲットフォーマットをチェックし、それに応じてタイプコメントを変更してください。 |
![]() | 推奨フォーマットを使用し、必要な角括弧を追加して |
代入式に予期しない型があります。 ![]() | 予想されるパターンに合うようにタイプを揃えます。 |
![]() | |
![]() | |
![]() | |
関数引数の型が正しくありません。 ![]() | リストの代わりに辞書を |
![]() |
|
![]() | 型定義で指定されているようにキーを割り当てます。
|
装飾された関数の不適切な使用。PyCharm は、デコレーターのタイプに基づいて、装飾された関数のタイプを検証します。 ![]() | 必要に応じて、関数 return を使用するデコレーターまたはステートメントを変更します。 |
# type: ignore
または # noqa
コメントを追加して、型検証の警告を抑制したり、欠落しているインポートステートメントを無視したりできます。

Python スタブ
Python スタブファイルを使用すると、Python 3 構文を使用して型ヒントを指定できます。これらのヒントは、インタープリターで使用されている Python バージョンに関係なく、Python ファイルで利用できます。
次の例では、スタブファイル (stubs.pyi) からの sample_function
の型ヒントが Python ファイル (stubs.py) で使用可能になります。
スタブアナログが検出されたパッケージを使用している場合は、次のメッセージが表示されます。

スタブパッケージをインストールし、このメッセージを無視して現在インストールされているパッケージで作業を続行するか、プロジェクト設定でこの種のインスペクションを無効にすることができます。
Typeshed を使用する
Typeshed(英語) は、標準の Python ライブラリとさまざまなパッケージの型アノテーションが付いたファイルのセットです。Typeshed スタブは、型ヒントで定義された Python クラス、関数、モジュールの定義を提供します。PyCharm は、この情報を使用して、コード補完、インスペクション、その他のコードインサイト機能を向上させます。
PyCharm には Typeshed(英語) スタブがバンドルされています。使用可能な Typeshed スタブのリストは、ノード外部ライブラリ | <Python インタープリター> | Typeshed スタブのプロジェクトビューに表示されます。
バンドルされた Typeshed リポジトリを独自のバージョンでオーバーライドするには、次の手順を実行する
スタブの一部またはすべてをプロジェクトのディレクトリにコピーします。
ディレクトリのコンテキストメニューからディレクトリをマーク | ソースルートを選択して、ディレクトリをソースルートとしてマークします。
Python スケルトンリポジトリ https://github.com/JetBrains/python-skeletons(英語) は廃止予定です。
関連ページ:

Python
PyCharm で Python スクリプトを開発するには:Python をダウンロードしてインストールします。少なくとも 1 つの Python インタープリターを構成します。Windows ユーザーの場合、Windows 用 Python をインストールすることをお勧めします。サポートされるバージョン:Python 2: バージョン 2.7、Python 3: バージョン 3.6 からバージョン 3.13 まで、次の機能は、Python 3.13 サポートの一部として使用できます。PEP 696...

スタブ
PyCharm は、.pyi 拡張機能を備えた Python スタブファイルをサポートします。これらのファイルを使用すると、Python 2 と 3 の両方に Python 3 構文を使用して型ヒントを指定できます。独自の実装用のスタブファイルを作成するターゲット実装が存在するディレクトリに移動します。メインメニューからを選択し、次に Python ファイルを選択します(または、ショートカットを使用します)。新規 Python ファイルダイアログで、Python スタブを選択し、ファイル名を指定しま...

Python インタープリターを構成する
PyCharm の Python インタープリター:PyCharm で Python コードを使用するには、少なくとも 1 つの Python インタープリターを構成する必要があります。Python インストールで使用可能なシステムインタープリターを使用できます。また、Virtualenv、pipenv、Poetry、または conda 仮想環境を作成することもできます。仮想環境は、基本インタープリターとインストールされたパッケージで構成されます。PyCharm Professional では、SS...

パッケージのインストール、アンインストール、アップグレード
PyCharm は、特定の Python インタープリター用の Python パッケージをインストール、アンインストール、アップグレードする方法を提供します。これは、各プロジェクトに独自のパッケージセットがあることを意味し、これは Python 依存関係管理のベストプラクティスと見なされます。デフォルトでは、PyCharm はプロジェクトパッケージの管理に pip を使用します。conda 環境では、conda パッケージマネージャーを使用できます。PyCharm では、Python パッケージツー...

docstring のレガシー型構文
PyCharm は docstring を使用して Python で型を指定するためのレガシーアプローチをサポートします。その際、サポートされているフォーマットは次のとおりです。reStructuredText、NumPy、Google、必要な docstring 形式を選択するには、設定ダイアログの Python 統合ツールページを使用します。Python の docstrings の型構文は、どの標準でも定義されていません。PyCharm は次の表記を提案しています。現在のスコープで表示される...

パターンマッチング
PyCharm は、PEP-634、PEP-635、PEP-636 で導入され、Python 3.10 以降で使用可能なパターンマッチングのサポートを提供します。パターンマッチングは、関連するアクションを伴うパターンの match ステートメントおよび case ステートメントの形式で追加されました。match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case...