Python中的函數(shù)注釋:參數(shù)有冒號,聲明后有-> 箭頭
我在查看python的fixture源碼時發(fā)現(xiàn) fixture的方法定義形式如下:
- def fixture(
- fixture_function: Optional[_FixtureFunction] = None,
- *,
- scope: "Union[_Scope, Callable[[str, Config], _Scope]]" = "function",
- params: Optional[Iterable[object]] = None,
- autouse: bool = False,
- ids: Optional[
- Union[
- Iterable[Union[None, str, float, int, bool]],
- Callable[[Any], Optional[object]],
- ]
- ] = None,
- name: Optional[str] = None,
- ) -> Union[FixtureFunctionMarker, _FixtureFunction]:
我頓時有些凌亂,不知這是什么東東,經(jīng)過各種網(wǎng)上查找資料,發(fā)現(xiàn)這是Python 3.X新增加的一個特性,叫作函數(shù)注釋 Function Annotations。它的用途雖然不是語法級別的硬性要求,但是顧名思義,它可作為函數(shù)額外的注釋來用。他的用法也很簡單。
在python中定義普通的函數(shù),方法如下:
- def f1(a,b):
- return a+b
通過函數(shù)注釋,方法定義如下:
- def f2(a: "str類型參數(shù)a", b: "str類型參數(shù)b") -> str:
- print("Annotations:", f2.__annotations__)
- return a+b
其中
- a: "str類型參數(shù)a"代表了對參數(shù)a的說明
- b: "str類型參數(shù)b"代表了對參數(shù)b的說明
- -> str:代表了函數(shù)的返回值
- f2.__annotations__查看函數(shù)的注釋說明
運(yùn)行 print(f2('aa','bb')),輸出:
- Annotations: {'a': 'str類型參數(shù)a', 'b': 'str類型參數(shù)b', 'return': }
aabb
那么定義了函數(shù)的參數(shù)類型和返回值類型我們是否就不可以對其進(jìn)行修改了呢,讓我們做如下嘗試:
print(f2(1,2)),輸出:
- Annotations: {'a': 'str類型參數(shù)a', 'b': 'str類型參數(shù)b', 'return': }
可見, Function Annotations它的作用僅僅是為函數(shù)進(jìn)行注釋來用,并不能指定參數(shù)類型。