假设我有一个函数
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))
获取更多信息和将来的读者:
这是type-hinting
,并且不做任何关于接受或拒绝任何type
的事情,即使您只指定一个type
。为了更加严格,并且该函数不能接受任何其他type
,您必须使用raise
:
def func(data):
if type(data) not in [str, pd.DataFrame]:
raise RuntimeError("This is not good")
甚至允许您使用string
s作为类型提示,例如:
def func(data: "str"):
print(data)
并且,正如您在第一个示例中看到的,您可以使用任何class
进行类型提示,这是一个很好的实践。