欢迎访问宙启技术站
智能推送

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 模块中一些常见的类型标注方式,还有许多其他的类型和类型组合可以使用。使用类型标注可以帮助我们在编写代码时更好地定义和理解代码的输入输出,提高代码的可维护性和可读性。