繁体   English   中英

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

[英]How to type-hint non-basic parameters of a function?

在python3.6

假设您有一个具有 5 个 arguments 的 function。 A a string object, a list of string objects, argparse.Namespace object, a pandas dataframe, and a logging.Logger object.

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:

虽然我通常会重构以避免长 arg 列表。 我不喜欢在我的 function 签名中出现换行符。

如果您需要查找 object 的类型:

>>> type(logging.root)
logging.RootLogger
>>> type(logging.root).__bases__
(logging.Logger,)

正如 Kache 之前键入的那样,这应该是正确的答案,但是在做这些事情时你必须关注两件事:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM