在python3.6 中
假设您有一个有5个参数的函数。A字符串对象、字符串对象列表、argparse.Namespace
对象、panda数据帧和logging.Logger
对象。
如
def main(a_string, a_list, args, df, logger):
前两个都很直接,但你怎么选最后两个呢?
def main(a_string: str, a_list: List[str], args: ???, df: ???, logger: ???) -> str:
提前感谢!
for reference:
type(args) -> argparse.Namespace
type(logger) -> logging.Logger
如果我正确理解你的问题,它与str
(一种类型(相同,即输入类型:
def main(a_string: str, a_list: List[str], args: argparse.Namespace df: pandas.DataFrame, logger: logging.Logger) -> str:
尽管我通常会进行重构以避免长参数列表。我不喜欢在函数签名中使用换行符。
如果您需要查找对象的类型:
>>> type(logging.root)
logging.RootLogger
>>> type(logging.root).__bases__
(logging.Logger,)
正如Kache之前键入的,这应该是正确的答案,但在做这件事时必须注意两件事:
- 首先,Python是类型提示(如果您想阅读更多内容,请访问此处(
- 如果方法的一个arugument不满足该变量的类型,则此类型提示不会直接引发任何异常。只有当您尝试使用该假定类型的方法时,它才会引发异常。例如,假设您的a_string不是真正的str,并且在函数内部您正在调用一个简单的a_string.strip((。这将引发一个异常