python 函数如何指定参数类型?

  • Post category:Python

在 Python 中,函数可以指定参数类型,可以通过以下两种方式实现:

  1. 函数注解
  2. 类型提示

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 的类型。这样使用起来更加方便,也更加易读。

总结一下,通过函数注解和类型提示,我们可以更加清晰地定义函数的参数类型,使代码更加易读易懂,也可以在程序运行时进行类型检查,从而减少类型相关的错误。