如何键入函数的提示非基本参数



在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之前键入的,这应该是正确的答案,但在做这件事时必须注意两件事:

  1. 首先,Python是类型提示(如果您想阅读更多内容,请访问此处(
  2. 如果方法的一个arugument不满足该变量的类型,则此类型提示不会直接引发任何异常。只有当您尝试使用该假定类型的方法时,它才会引发异常。例如,假设您的a_string不是真正的str,并且在函数内部您正在调用一个简单的a_string.strip((。这将引发一个异常

相关内容

  • 没有找到相关文章

最新更新