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
,但未能预料到所有可能导致问题的事情。不要尝试;在这种情况下,您传递的参数无论如何都不会引发ValueError
(int(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 - TypeError: '...' 类型的对象没有 len()