2016-09-05 21 views
0

型ヒント用の共用体を書く方法を知っている人はいますか?私は、次のことをやっていますが、PyCharmで認識されていないPyCharm:pycharmで型ヒントのための共用体を指定する方法

def add(a, b) 
    # type: (Union[int,float,bool], Union[int,float,bool]) -> Union([int,float,bool]) 
    return a + b 

組合の型のヒントを指定する正しい方法は何ですか?

私はこのためにpython 2.7を使用しています。

答えて

1

私のために、以下の作業を行う、Pycharm中(バージョン2016年2月2日):

from typing import Union 

def test(a, b): 
    # type: (Union[int, float, bool], Union[int, float, bool]) -> Union[int, float, bool] 
    return a + b 

Pycharmが原因あなたがUnionをインポートするのを忘れ、またはおそらくので、あなたの戻り値の型に余分な括弧にあるため混同されることがtypingモジュールから

+0

私はPython 2.7を使用していますが、タイピングモジュールにはアクセスできません。連合はPython 3のみで使用できますか? – Har

+1

@Har - Python 2.7に 'typing'モジュールをインストールするには' pip install typing'を実行します。 'typing'モジュールはPython 3.5の標準ライブラリに追加され、Python 2.7とPython 3.2 - 3.4にサードパーティのライブラリとしてインストールすることができます。 – Michael0x2a

1

タイプヒント用の共用体を指定するためのmany waysがあります。

次を使用することができ のPython 2では

と3:Pythonの3.5で

def add(a, b): 
    """ 
    :type a: int | float | bool 
    :type b: int | float | bool 
    :rtype: int | float | bool 
    """ 
    return a + b 

typingモジュールが導入されましたので、あなたは、次のいずれかを使用することができます。

from typing import Union 

def add(a, b): 
    # type: (Union[int, float, bool], Union[int, float, bool]) -> Union[int, float, bool] 
    return a + b 

または

from typing import Union 

def add(a, b): 
    """ 
    :type a: Union[int, float, bool] 
    :type b: Union[int, float, bool] 
    :rtype: Union[int, float, bool] 
    """ 
    return a + b 

または

+0

これは、PEPベースのタイプのヒントがPython 3でのみ利用可能であることを意味しますか?だから唯一の方法は、python 2のdocstring型のヒントを使うことです? – Har

+1

mypyはPython 2で動作します。http://mypy.readthedocs.io/en/latest/python2.html –

+3

@ user2235698と@Har - これは間違っています。 'typing'モジュールはPython 2.7+用の第三者ライブラリとしてダウンロードすることができます。したがって、タイプヒントはPython 2とPython 3の両方で利用できます。 – Michael0x2a

関連する問題