在 Python 中,函数可以指定参数类型,可以通过以下两种方式实现:
- 函数注解
- 类型提示
1. 函数注解
函数注解是在 Python 3 中引入的新特性。函数注解可以用来给函数参数和返回值添加元数据,并不会影响到程序的执行。
在函数定义时,将参数名称和对应类型用冒号分隔,并且使用箭头 “->” 声明返回值类型,如下所示:
def func(a: int, b: str) -> bool:
# 函数体
上面的例子中,函数 “func” 接受两个参数 “a” 与 “b”,分别被注解为 “int” 类型和 “str” 类型,返回值被注解为 “bool” 类型。
注解可以是任何表达式,并没有限制,但是一般建议使用内置类型或者类型别名。
通过调用函数的 “annotations” 属性可以访问函数注解。例如:
print(func.__annotations__)
# 输出 {'a': <class 'int'>, 'b': <class 'str'>, 'return': <class 'bool'>}
2. 类型提示
类型提示是在 Python 3.5 中引入的特性,它与函数注解区别在于,类型提示可以与注解不同,且它会对程序的执行产生影响,即使在函数定义时不指定参数类型,仍然可以通过类型提示进行类型检查。
类型提示的方式是在函数定义时,在参数名称后用冒号 “:” 指定参数类型,如下所示:
def func(a: int, b: str) -> bool:
# 函数体
与函数注解一样,参数类型可以是任何有效的表达式,也可以使用类型别名。
然后,在函数内部可以使用 isinstance() 函数来检查参数类型,例如:
def func(a, b):
if not isinstance(a, int):
raise TypeError("Parameter a must be an integer.")
if not isinstance(b, str):
raise TypeError("Parameter b must be a string.")
# 函数体
如果参数类型不正确,则会抛出 TypeError 异常提示参数类型错误。
如果在 Python 3 中使用类型提示,建议使用 Type Hints 标准来定义类型,例如:
from typing import List, Dict
def func(a: int, b: str, c: List[str], d: Dict[str, int]) -> bool:
# 函数体
在这个例子中,我们使用了 Type Hints 标准来定义 List 和 Dict 的类型。这样使用起来更加方便,也更加易读。
总结一下,通过函数注解和类型提示,我们可以更加清晰地定义函数的参数类型,使代码更加易读易懂,也可以在程序运行时进行类型检查,从而减少类型相关的错误。