15

「リクエスト」pythonライブラリを使用しているとします。

req = requests.get("http://google.com")

この後、 と入力req.すると、アクセスできるすべてのメソッドのリストを取得することになっています。しかし、手動でctrl-spaceを押しても、何らかの理由でそうしません。

これを ipython で試すと、オートコンプリートの推奨事項が表示されます。pycharm の組み込みの python コンソールから試しても、推奨事項が表示されます。

なぜこれが起こっているのですか?

4

7 に答える 7

23

Python は動的に型付けされる言語であるため、Python がどのような型であるかを確認し、システム上のライブラリを正しく検査できるようにする必要があります。コード内のオブジェクトの型が明らかであることを確認してください。

PyCharm 2.7 (バージョンが数字だった頃) の時点での 1 つの良い方法は、実行時の型検出を有効にすることです。PyCharm は、実行中 (デバッグ中) にプログラムにフックし、使用されている変数の型をチェックします。

これを有効にするには、設定に移動し、[ビルド、実行、デプロイ] セクションに移動してから [Python デバッガー] サブセクションに移動し、[コード インサイトのためにランタイム型情報を収集する] を有効にします。

PyCharm の設定画面が開き、関連する設定が表示されます。

明らかに、これは完全ではないことに注意してください - 変更を加えた場合、これはコードが実行されるまで更新されず、見た値についてのみ通知できます - あなたが試したことのない他のコードパスは他のタイプを設定します。

パラメーターと戻り値の型に関する情報を含む Epydoc または Sphinx スタイルの docstring を使用して、PyCharm に「伝える」こともできます。PyCharm はこれらを使用して検査を改善します。

Python は、Python 3 の時点で関数注釈のサポートも獲得しました。これらは、 PEP 484に従って型ヒントに使用できます。詳細については、typingモジュールを参照してください。これはより形式的であるため、mypyこれらの型の一貫性をプログラムでチェックできる型チェッカーなどのツールにも使用でき、Python に TypeScript スタイルのオプションの静的型付けを提供します。

于 2013-02-22T11:16:56.597 に答える
8

Pythonは動的型付け言語です。つまり、「get」関数はその戻り型を宣言しません。IPythonまたはPyCharmコンソールでコードを入力している場合、コードは実際に実行されており、実行中のインタープリターでオブジェクトインスタンスを検査し、そのメソッドのリストを取得することができます。PyCharmまたは他のPythonIDEでコードを入力している場合、コードは実行されず、静的分析を使用してメソッドの戻り型を推測することしかできません。これはすべての場合に可能というわけではありません。

于 2013-02-22T11:18:08.897 に答える
0

これは古い質問ですが、おそらく提供されたすべての回答は、太陽からベテルギウスまでの距離と同じくらいの差でマークを外しました(回答はどれも受け入れられず、@ user1265125はここで8年間活動しており、私よりも信頼されています)。

たまたま、OPとまったく同じ問題が発生したばかりで、解決策は次のとおりです。

プロジェクトのフォルダ パスのどこかに非 ASCII CHAR があります

真剣に、PyCharm 開発者...[doubleFacepalm]

于 2020-03-26T19:34:44.647 に答える
0

メソッドまたは変数を検出するだけで...その一部を書き込む場合:ファイル->設定->エディター->一般->開いたウィンドウの上部にあるコード補完、[マッハケース]のチェックを外します

于 2019-09-18T04:49:34.150 に答える