假设我有一个函数

def func(data:str):  
   pass

我想让它也接受数据帧和字符串.我该怎么办?这意味着如果字符串传递给它,它就会接受,如果数据帧传递给它,它也会接受.

推荐答案

import typing
import pandas as pd
def func(data:typing.Union[str, pd.DataFrame]):  
   pass

或者,如果您使用python 3.10或更新版本:

def func(data:str | pd.DataFrame):  
   print(type(data))

有关更多信息和future 读者:

这是type-hinting,并且不做任何关于接受或拒绝任何type的事情,即使您只指定了一个type.为了更加严格,并且该函数无法容纳任何其他type,必须使用raise:

def func(data):  
    if type(data) not in [str, pd.DataFrame]:
        raise RuntimeError("This is not good")

即使这样,您也可以使用strings作为类型提示,例如:

def func(data: "str"):  
    print(data)

而且,正如您在第一个示例中所看到的,您可以使用任意class来进行类型暗示,这是一个很好的实践.

Python相关问答推荐

处理具有多个独立头的CSV文件

将标签移动到matplotlib饼图中楔形块的开始处

计算空值

从源代码显示不同的输出(机器学习)(Python)

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

如何在Airflow执行日期中保留日期并将时间转换为00:00

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

合并相似列表

如何在Python中自动创建数字文件夹和正在进行的文件夹?

TypeError:';Locator';对象无法在PlayWriter中使用.first()调用

通过对列的其余部分进行采样,在Polars DataFrame中填充_null`?

当lambda函数作为参数传递时,pyo3执行

如何强制SqlalChemy指向与连接字符串的默认架构不同的架构

逐个像素图像处理的性能问题(枕头)

如何将数据从一个数据框按行添加到另一个数据框,仅当两个数据框中第一列的值相等时?

删除一个元素后,在这个最长的1子数组中出现了什么问题

BeautifulSoup:迭代元素列表并按类提取文本

如何使用Python模式匹配来匹配类类型?

形状摘要_绘图的子图