命名規則 <<
Previous Next >> Kmol-editor
類型註解規則
建議對任何 Functions 與 Methods 都加上類型註解(參見 PEP 484),必要時在一般名稱也可做註記(回傳值無法推斷時)。
if not row > -1:
return
# Here is not None!
item: MyItem = table.item(row)
item.do_something()
若是回傳 None 值,可以不加上回傳值的註解。
def func(a: bool):
if a:
return
do_my_job()
序列的樣式為 Sequence[T]、List[T]、Iterator[T] 等,唯獨 Tuple[T] 為固定長度,應標示 Tuple[T, ...]。
def _join_more(iter_obj: Iterable[int]) -> Tuple[int, ...]:
"""Convert iterable object to tuple."""
return tuple(iter_obj) + (1,)
若是可能為多種非繼承類型,使用 Union。
s: Union[str, Sequence[bytes]] = s_func()
若是可能為 None 值,應加上 Optional。
def func(*, labels: Optional[Sequence[int]] = None):
...
Functions 使用 Callable[[In_T1, InT2], Out_T]。
def danger(func: Callable[[Any], Any]) -> Callable[[Any], Any]:
"""My danger decorator."""
def wrapper_func(*args):
"""Is danger function."""
print("Danger!")
return func(*args)
return wrapper_func
@danger
def foo():
...
造成遞迴引用類型時應改為字串。
class MyClass:
def __add__(self, p: 'MyClass') -> 'MyClass':
...
命名規則 <<
Previous Next >> Kmol-editor