from typing import get_type_hints
# 函数参数和返回值的类型的声明
def add(a : int , b :int) -> int:
validate_input(add, a = a, b =b)
return a + b
# **kwargs 打包关键字参数成dict给函数体调用
def validate_input(obj, **kwargs):
hints = get_type_hints(obj)
for para_name , para_type in hints.items():
if para_name == "return":
continue
# isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
if not isinstance(kwargs[para_name], para_type):
raise TypeError("参数:{}类型错误,应该是{}".format(para_name, para_type))
if __name__ == '__main__':
print(add(1,2))
print(add("hello", "18"))
print(add.__annotations__)
print(get_type_hints(add)) #{'a': , 'b': , 'return': }