Python如何修改函数参数使其同时支持str与DataFrame类型
解决方案
要让函数同时支持str和pandas.DataFrame类型入参,只需要调整类型注解为联合类型,同时在函数内部做类型分支处理即可,不同Python版本写法略有区别:
- Python 3.10及以上版本:支持用
|符号直接写联合类型,写法更简洁
import pandas as pd def func(data: str | pd.DataFrame): # 分支判断入参类型,分别处理 if isinstance(data, str): # 字符串入参对应的处理逻辑 pass elif isinstance(data, pd.DataFrame): # DataFrame入参对应的处理逻辑 pass
- Python 3.9及更早版本:需要从标准库
typing模块导入Union来定义联合类型
from typing import Union import pandas as pd def func(data: Union[str, pd.DataFrame]): # 分支判断入参类型,分别处理 if isinstance(data, str): # 字符串入参对应的处理逻辑 pass elif isinstance(data, pd.DataFrame): # DataFrame入参对应的处理逻辑 pass
注意:类型注解仅用于静态类型检查,不会在运行时自动拦截不符合类型的入参,也不会自动适配处理逻辑,必须在函数内部通过
isinstance()判断实际入参类型,编写对应分支的处理代码,才能保证两种类型的入参都能正常运行。
内容的提问来源于stack exchange,提问作者Talha Anwar
相关产品推荐
相关产品推荐

