Python typing: Difference between revisions
From wikinotes
Line 8: | Line 8: | ||
class Project: | class Project: | ||
def ex_param_w_return(user: User) -> Bool | |||
def | |||
pass | pass | ||
def ex_type_w_default(active: bool=False) -> None: | |||
def | |||
pass | pass | ||
def ex_no_return() -> None: | |||
def | |||
pass | pass | ||
def ex_generics(data: List[Dict]): | |||
def | |||
pass | pass | ||
# | def ex_optional() -> Optional[str]: # nullable type | ||
def | pass | ||
def ex_type_or_other_type(id: Union[str, int]) -> None: | |||
pass | pass | ||
</source> | </source> |
Revision as of 15:09, 3 April 2022
Type annotations in python.
Example
from typing import Dict, List, Tuple from typing import Optional, Union class Project: def ex_param_w_return(user: User) -> Bool pass def ex_type_w_default(active: bool=False) -> None: pass def ex_no_return() -> None: pass def ex_generics(data: List[Dict]): pass def ex_optional() -> Optional[str]: # nullable type pass def ex_type_or_other_type(id: Union[str, int]) -> None: pass
Common Types
dates/times
import datetime def foo() -> datetime.datetime: return datetime.datetime.now() def foo() -> datetime.date: return datetime.date.today()open file objects
from typing import IO # either bytes/str def foo() -> IO: return open('foo.txt', 'r') def foo() -> IO[bytes]: return open('foo.txt', 'rb') def foo() -> IO[str]: return open('foo.txt', 'r')context managers
@contextlib.contextmanager def foo() -> Iterator[str]: print('foo') yield 'bar' print('baz')