假设我有一个函数
def func(data:str):
pass
我想让它也接受数据帧和字符串.我该怎么办?这意味着如果字符串传递给它,它就会接受,如果数据帧传递给它,它也会接受.
假设我有一个函数
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")
即使这样,您也可以使用string
s作为类型提示,例如:
def func(data: "str"):
print(data)
而且,正如您在第一个示例中所看到的,您可以使用任意class
来进行类型暗示,这是一个很好的实践.