typing模块中常用的类型标注方式
发布时间:2024-01-13 19:27:39
在 typing 模块中,有许多常用的类型标注方式,可以帮助我们在代码中明确指定变量的类型,增加代码的可读性和准确性。下面是一些常见的类型标注方式及其使用例子。
1. List:用于表示列表类型。
from typing import List
def sum_elements(nums: List[int]) -> int:
return sum(nums)
numbers = [1, 2, 3, 4, 5]
total = sum_elements(numbers)
print(total) # 输出:15
2. Dict:用于表示字典类型。
from typing import Dict
def get_full_name(person: Dict[str, str]) -> str:
return person['first_name'] + ' ' + person['last_name']
employee = {'first_name': 'John', 'last_name': 'Doe'}
name = get_full_name(employee)
print(name) # 输出:John Doe
3. Tuple:用于表示元组类型。
from typing import Tuple
def get_coordinates() -> Tuple[float, float]:
return (37.7749, -122.4194)
lat, lon = get_coordinates()
print(lat, lon) # 输出:37.7749 -122.4194
4. Set:用于表示集合类型。
from typing import Set
def get_unique_numbers(nums: List[int]) -> Set[int]:
return set(nums)
numbers = [1, 2, 2, 3, 3, 4, 5]
unique_nums = get_unique_numbers(numbers)
print(unique_nums) # 输出:{1, 2, 3, 4, 5}
5. Optional:用于表示可选类型,即可以是指定类型或者 None。
from typing import Optional
def get_middle_element(nums: List[int]) -> Optional[int]:
if len(nums) % 2 == 1:
return nums[len(nums) // 2]
else:
return None
numbers = [1, 2, 3, 4, 5]
middle_element = get_middle_element(numbers)
print(middle_element) # 输出:3
6. Union:用于表示多个类型中的任意一个。
from typing import Union
def get_name(obj: Union[str, dict]) -> str:
if isinstance(obj, str): # 如果是字符串类型
return obj
elif isinstance(obj, dict): # 如果是字典类型
return obj['name']
else:
return ''
name1 = get_name("John")
name2 = get_name({"name": "Jane"})
print(name1) # 输出:John
print(name2) # 输出:Jane
7. Callable:用于表示可调用对象的类型,如函数、方法等。
from typing import Callable
def greet(name: str) -> str:
return "Hello, " + name + "!"
def call_func(func: Callable[[str], str], name: str) -> str:
return func(name)
result = call_func(greet, "John")
print(result) # 输出:Hello, John!
8. Any:用于表示任意类型。
from typing import Any
def square(num: Any) -> Any:
return num * num
x = 5
y = 2.5
z = "Hello"
print(square(x)) # 输出:25
print(square(y)) # 输出:6.25
print(square(z)) # 输出:HelloHello
这只是 typing 模块中一些常见的类型标注方式,还有许多其他的类型和类型组合可以使用。使用类型标注可以帮助我们在编写代码时更好地定义和理解代码的输入输出,提高代码的可维护性和可读性。
