You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过类型提示为Python函数参数指定多种类型?

嗨,这两个问题都问到点子上了,我来一步步给你解答:

1. 如何使用类型提示为函数参数指定多种类型?

在Python中,给函数参数指定多种可选类型,主要分两种场景,取决于你的Python版本:

  • Python 3.10及更高版本:直接用竖线|来表示“或”的关系,语法简洁直观。
  • Python 3.9及更早版本:需要从typing模块导入Union类型来实现多类型声明。

举个简单的示例,比如一个能接受整数或字符串的函数:

# Python 3.10+ 写法
def handle_input(input_data: int | str) -> None:
    print(f"处理的数据:{input_data}")

# Python 3.9及以下写法
from typing import Union
def handle_input(input_data: Union[int, str]) -> None:
    print(f"处理的数据:{input_data}")

像mypy这类类型检查工具,会准确识别这个参数允许的两种类型。

2. 为兼容str和Element类型的函数指定类型提示

完全可以!正好用上上面的多类型指定方法。结合你的需求,函数既接受str类型的XML数据,也接受xml.etree.ElementTree.Element对象,还会自动转换Element为字符串,具体实现如下:

# Python 3.10+ 版本写法
import xml.etree.ElementTree as ET

def process_xml(xml_content: str | ET.Element) -> str:
    # 自动转换Element类型为字符串
    if isinstance(xml_content, ET.Element):
        xml_content = ET.tostring(xml_content, encoding='unicode')
    # 这里写你的后续处理逻辑
    return xml_content

# Python 3.9及以下版本写法
from typing import Union
import xml.etree.ElementTree as ET

def process_xml(xml_content: Union[str, ET.Element]) -> str:
    if isinstance(xml_content, ET.Element):
        xml_content = ET.tostring(xml_content, encoding='unicode')
    return xml_content

这样写之后,类型检查工具能清楚知道xml_content允许的两种类型,同时函数内部的转换逻辑也一目了然,其他开发者看代码时也能快速理解参数的预期类型。

内容的提问来源于stack exchange,提问作者Stevoisiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:23:26