[PY3]——函式——函式註解 | 實現型別檢查功能

Jelly_lyj發表於2017-03-18

函式註解(Function Annotations)——> 可以在定義函式的時候對引數和返回值新增註解

 

寫函式註解

#平時我們使用help()可以檢視一個函式的說明,我們自己寫的函式也可以提供這樣的說明

#第一種方式:直接在函式內 '''寫文字'''

def add(x,y):
   '''x+y
   @:param x int
   @:param y int
   @return int
   '''
   return x+y

#print(help(add))
  Help on function add in module __main__:
  add(x, y)
      x+y
      @:param x int
      @:param y int
      @return int
  (END)


# 第二種方式:更常用,是python中的函式註解語法
# 引數:型別引數:"說明文字"  -> 返回值型別

def add(x:int,y:"It's a int") ->int: return x+y() print(help(add)) Help on function add in module __main__: add(x:int, y:"It's a int") -> int (END)

 

檢視函式註解

function.__annotations__

# function.__annotations__
print(sum.__annotations__)
#{'return': <class 'int'>, 'lst': typing.List<~T>[int]}

inspect.signature

# inspect.signature
import inspect

# 獲取函式註解
sig=inspect.signature(add)
print(sig)
#(x:int, y:"It's a int") -> int

# 獲取函式引數(其輸出是個有序字典)
print(sig.parameters)
#OrderedDict([('x', <Parameter "x:int">), ('y', <Parameter "y:"It's a int"">)])

## 獲取指定引數註解 ##
# 法1:
print(sig.parameters['x'])
#x:int
# 法2:
print(sig.parameters['x'].annotation) #即利用parameters輸出的有序字典來訪問
#<class 'int'>


## 獲取返回值註解 ##
print(sig.return_annotation)
#<class 'int'>

print(sig.parameters.values())
#odict_values([<Parameter "x:int">, <Parameter "y:int">])

 

相關文章