Python TypeError:“NoneType”类型的对象没有 len()

Posted

技术标签:

【中文标题】Python TypeError:“NoneType”类型的对象没有 len()【英文标题】:Python TypeError: object of type 'NoneType' has no len() 【发布时间】:2021-03-03 04:34:51 【问题描述】:

我从这段代码中得到一个错误:

def make_int(var):
    if len(var) != 0:
        var = int(var)
    return var

错误:

TypeError: object of type 'NoneType' has no len()

我该如何解决这个问题?

【问题讨论】:

先检查var is not None 向我们展示您传递给该函数的参数... 您可能希望将您的测试更改为 if var:,这将捕获空字符串和 None。 听起来好像您期待一个字符串,而不是None,作为不可转换的参数。 try int(var),如果发现任何异常则返回 var 会更简单。 @FrankYellin 但它会传递任何具有真实价值的东西,例如非空字符串。所以int('asdf') 还是会崩溃 【参考方案1】:

看起来您在调用int(var) 时试图避免ValueError,但未能预料到所有可能导致问题的事情。不要尝试;在这种情况下,您传递的参数无论如何都不会引发ValueErrorint(None) 会引发TypeError)。只需捕获异常并在发生时返回 var

def make_int(var):
    try:
        return int(var)
    except Exception:
        return var

【讨论】:

【参考方案2】:

使用这个sn-p

def make_int2(var):
    if isinstance(var, str) and var.isdigit():
        return int(var)
    return None

【讨论】:

以上是关于Python TypeError:“NoneType”类型的对象没有 len()的主要内容,如果未能解决你的问题,请参考以下文章

python中的ValueError和TypeError

Python - TypeError: '...' 类型的对象没有 len()

Python - TypeError:需要可迭代参数

TypeError:实例Python之间不支持'<'

python fbprophet错误,TypeError:'module'对象不可调用

TypeError:“NoneType”对象在 Python 中不可迭代