当 docstring 需要字符串时,您可以传递 None 参数吗?

jon*_*two 5 python lint docstring pycharm

好吧,这个问题可能已经在某个地方得到了回答,但我的 Google-fu 还没有找到正确的关键字组合。

我有一个接受字符串的函数,但是当我传递 None 时,Pycharm 的检查会标记类型错误。这是 linter 中的错误吗?None 算作字符串吗?我知道我可以使用空字符串调用该函数,但我认为我也应该能够使用 None 。

def my_func(some_str):
""" does something
Arguments:
some_str (str): a string
"""
    # do something

...

my_func(None)  <-- throws Expected type 'str', got 'None' instead
Run Code Online (Sandbox Code Playgroud)

Sta*_*ael 1

作为一个不同意见,Python 不是强类型的,因此 pycharm 的 linter 强调这一错误对我来说似乎有点奇怪。

当然,有许多函数合法地需要字符串,但我确信我在某个地方看到了“良好实践”,它是一个看起来更像这样的函数:

def myfunct(s):
    try:
        s = str(s)
    except TypeError:
        raise TypeError('message explaining function usage')
    # actual function
Run Code Online (Sandbox Code Playgroud)

这适用于任何可以强制转换为字符串的内容,这似乎比字面意义上的字符串更明智。

我疯了吗?