您的位置:首页 > 科技 > 能源 > 企业所得税计算公式2022_怎么自己制作二维码_新网站百度收录_网站seo排名优化方法

企业所得税计算公式2022_怎么自己制作二维码_新网站百度收录_网站seo排名优化方法

2024/12/23 7:26:10 来源:https://blog.csdn.net/engchina/article/details/144369131  浏览:    关键词:企业所得税计算公式2022_怎么自己制作二维码_新网站百度收录_网站seo排名优化方法
企业所得税计算公式2022_怎么自己制作二维码_新网站百度收录_网站seo排名优化方法

Python泛型编程:TypeVar和Generic详解 - 写给初学者的指南

    • 前言
    • 1. 为什么需要泛型?
    • 2. TypeVar:定义泛型类型变量
    • 3. Generic:创建泛型类
    • 4. 多个泛型类型变量
    • 5. 使用场景小结
    • 结语

前言

大家好!今天我们来聊一聊Python中的泛型编程。想象一下,泛型就像是一个"万能盒子",可以装不同类型的东西,但又保持它的灵活性和类型安全。听起来很酷,对吧?

1. 为什么需要泛型?

在编程中,我们经常需要编写可以处理多种类型数据的函数或类。比如,你希望创建一个函数,无论是处理整数、字符串还是自定义对象,都能正常工作。这就是泛型发挥作用的地方!

2. TypeVar:定义泛型类型变量

TypeVar就像是一个类型的"通行证",它允许你定义可以接受不同类型的变量。

from typing import TypeVar, Generic# 定义一个泛型变量T
T = TypeVar('T')# 创建一个泛型函数
def get_first_item(items: list[T]) -> T:"""获取列表的第一个元素"""if items:return items[0]raise ValueError("列表为空")# 使用示例
numbers = [1, 2, 3, 4, 5]
words = ['apple', 'banana', 'cherry']print(get_first_item(numbers))  # 输出: 1
print(get_first_item(words))    # 输出: apple

3. Generic:创建泛型类

我们可以使用Generic创建支持多种类型的类。想象一下,我们要创建一个可以存储任何类型数据的"魔法盒子"。

from typing import TypeVar, Generic# 定义泛型变量
T = TypeVar('T')class MagicBox(Generic[T]):def __init__(self):self._items = []def add_item(self, item: T):"""添加物品到盒子"""self._items.append(item)def get_items(self) -> list[T]:"""获取盒子中的所有物品"""return self._itemsdef get_first_item(self) -> T:"""获取第一个物品"""if self._items:return self._items[0]raise ValueError("盒子是空的")# 创建不同类型的魔法盒子
number_box = MagicBox[int]()
number_box.add_item(10)
number_box.add_item(20)
print(number_box.get_items())  # 输出: [10, 20]string_box = MagicBox[str]()
string_box.add_item("Hello")
string_box.add_item("World")
print(string_box.get_items())  # 输出: ['Hello', 'World']

4. 多个泛型类型变量

我们还可以使用多个泛型类型变量,就像有多个"通行证"。

from typing import TypeVar, GenericK = TypeVar('K')  # Key类型
V = TypeVar('V')  # Value类型class SuperDict(Generic[K, V]):def __init__(self):self._data = {}def add_pair(self, key: K, value: V):"""添加键值对"""self._data[key] = valuedef get_value(self, key: K) -> V:"""根据键获取值"""return self._data.get(key)# 创建不同类型的超级字典
name_age_dict = SuperDict[str, int]()
name_age_dict.add_pair("Alice", 25)
name_age_dict.add_pair("Bob", 30)
print(name_age_dict.get_value("Alice"))  # 输出: 25code_language_dict = SuperDict[int, str]()
code_language_dict.add_pair(1, "Python")
code_language_dict.add_pair(2, "Java")
print(code_language_dict.get_value(1))  # 输出: Python

5. 使用场景小结

泛型适用的典型场景:

  • 创建可重用的数据结构
  • 编写灵活且类型安全的函数
  • 设计支持多种类型的类

结语

通过泛型,我们可以编写更加灵活、安全和可读的代码。就像万能盒子可以装不同的玩具,泛型可以让我们的代码处理各种类型的数据!

提示:这些示例都是可以直接运行的,大家可以复制代码到Python环境中尝试。

希望这篇文章帮助你理解了Python中的泛型编程!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com