Python中typing模块的使用方法
发布时间:2023-12-23 22:19:05
typing模块是Python中用于类型注解的模块,它提供了一组用于指定函数、变量和类的类型的工具。使用typing模块可以在代码中添加类型提示,提高代码的可读性和可维护性。
typing模块中主要包含了以下几种类型:
1. 基本类型:int、float、bool、str等;
2. 容器类型:List、Tuple、Dict、Set等;
3. 函数类型:Callable、Generator等;
4. 类型变量:TypeVar;
5. 泛型类型:Generic、Union、Optional等。
下面是一些常用的使用方法和例子:
1. 指定函数的参数类型和返回值类型:
from typing import List
def greet(name: str) -> str:
return "Hello, " + name
def add(nums: List[int]) -> int:
return sum(nums)
print(greet("Alice")) # 输出:Hello, Alice
print(add([1, 2, 3])) # 输出:6
2. 指定类的属性和方法的类型:
from typing import List
class Stack:
def __init__(self):
self.items: List[int] = []
def push(self, item: int) -> None:
self.items.append(item)
def pop(self) -> int:
return self.items.pop()
def size(self) -> int:
return len(self.items)
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop()) # 输出:3
print(stack.size()) # 输出:2
3. 定义泛型类型:
from typing import List, TypeVar
T = TypeVar('T')
def get_first_element(items: List[T]) -> T:
return items[0]
print(get_first_element([1, 2, 3])) # 输出:1
print(get_first_element(['a', 'b', 'c'])) # 输出:'a'
4. 使用Union指定多种可能的类型:
from typing import Union
def check_number(num: Union[int, float]) -> str:
if isinstance(num, int):
return "It's an integer."
elif isinstance(num, float):
return "It's a float."
else:
return "Invalid input."
print(check_number(10)) # 输出:It's an integer.
print(check_number(3.14)) # 输出:It's a float.
print(check_number("hello")) # 输出:Invalid input.
5. 使用Optional指定可选的类型:
from typing import Optional
def get_name_prefix(name: Optional[str]) -> str:
if name is None:
return "Hello, "
else:
return "Hello, " + name
print(get_name_prefix(None)) # 输出:Hello,
print(get_name_prefix("Alice")) # 输出:Hello, Alice
以上是typing模块的一些常用使用方法和例子,通过使用typing模块,可以为代码添加类型注解,提高代码的可读性和可维护性。
