0
昨日私は2.7から3.6にアップグレードしました。私はまたタイプヒントを使用し始めました。ここ は、私のコードの断片である:Python3でタイプヒントについて混乱しました
import numpy as np
from typing import Union, Tuple, Sequence, Any
Vector = Union[np.ndarray, Tuple[float, float, float]]
Matrix = np.ndarray
Tetra = Tuple[Vector, Vector, Vector, Vector]
...
def transform_ref2tetra(tetra: Tetra) -> Matrix:
""" Return the matrix M that transforms the points of the reference tetra
R=[[1,0,0],[0,1,0],[0,0,1],[0,0,0]] to tetra, i.e., M.R=tetra.
"""
...
PyCharm2016.3.2に、私は私が手クイックドキュメントをお願いする場合:
def transform_ref2tetra(tetra: Tetra)
Inferred type: (tetra: Tuple[Any, Any, Any, Any]) -> ndarray
Return the matrix M that transforms the points of the reference tetra
R=[[1,0,0],[0,1,0],[0,0,1],[0,0,0]] to tetra, i.e., M.R=tetra.
これは単なるドキュメントの問題ではありません。私が電話した場合:
transform_ref2tetra(tetra=("a","b","c","d"))
私は警告を受けません(そしてもちろん、実行時にエラーが発生します)。
何が起こっているのか考えてみませんか?これはPyCharmの問題ですか、何か間違っていますか?
これは有望そうだが、私はそれが当てはまるとは思わない。でも、私はnp.ndarrayをintに変更します。Anyを取得します。 – Eduardo
@Eduardo PyCharmのtypecheckerがどのように動作するかは気づかないのです。別の型チェッカーである 'mypy'が正しくチェックするので、PyCharmで何かが起きているとしか推測できません。 –