簡體   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