gpt4 book ai didi

python - 当 docstring 需要一个字符串时,你能传递一个 None 参数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:31:41 26 4
gpt4 key购买 nike

好吧,这个问题可能已经在某个地方得到了回答,但我的 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

最佳答案

首先回答你的问题 None 不是 str 它是 type.Nonetype 的唯一值它是一个 python 内置的 Contstant .了解一下 here .并且有很多方法可以绕过/处理可能的None输入

<强>1。要绕过它,不要处理 None:

期待 str 所以当然会抛出错误。只需传入 "" 即可。但在这种情况下调用 my_func(None) 仍然会给您一个错误。

my_func("") 

<强>2。处理可能的None 输入:

如果你想将 None 作为可能的输入参数之一,然后将你的参数设置为 optional parameter with * 这样你就可以输入None 并且不会出错

def my_func(*some_str):

默认您的输入为 None 如果用户传入的值不是 None 那么您知道用户传入了其他内容:这允许您对 my_func(None) 执行操作并且不会出现错误

def my_func(some_str = None):
if some_str:
#do something

注意:这也允许您平等对待 None''(感谢 Stael 指出)

关于python - 当 docstring 需要一个字符串时,你能传递一个 None 参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45594562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com