如果变量可以为 none,如何在语句中声明 'string'



我有一个变量,它通常得到字符串值,有时可能是NoneType。如果必须对其应用OR条件,并且验证其上是否包含字符串是很重要的。

给我一个'TypeError: argument of type 'NoneType' is not iterable'的当前代码如下:

if 'string' in my_var or not my_var:
do_something()

很自然,我通过强制my_var为if条件中的字符串来解决当前输入的这个问题,但我不认为这是一种Python式的解决方法,我认为它可能会为更复杂的输入带来一些错误:

if 'string' in str(my_var) or not my_var:
do_something()

所以,我想有一个更多的";正确的";我面临问题的解决方案

天哪,这就像C/C++中可能有空指针一样。在假设str:之前,您必须检查my_var是否不是None

if my_var is not None or 'string' in my_var:
do_something()

(在我的评论中,我有:if not my_var,这可能不是你想要的,因为如果my_var是空字符串,这个位就是True(

您应该使用isinstance(my_var, str)来检查my_var是否是字符串。

if my_var is not None and isinstance(my_var, str):

最新更新