如何在Python中引用空对象?


当前回答

它不像其他语言那样叫null,而是None。这个对象总是只有一个实例,所以如果需要,可以检查x is None(标识比较)是否相等,而不是x == None。

其他回答

在Python中,“null”对象是单例None。

要检查某个值是否为None,使用is标识符:

if foo is None:
    ...

用f来解决这个问题。

year=None
year_val= 'null' if year is None else  str(year)
print(f'{year_val}')

null

它不像其他语言那样叫null,而是None。这个对象总是只有一个实例,所以如果需要,可以检查x is None(标识比较)是否相等,而不是x == None。

在Python中处理“空”元素的简单函数:

代码:

def is_empty(element) -> bool:
    """
    Function to check if input `element` is empty.

    Other than some special exclusions and inclusions,
    this function returns boolean result of Falsy check.
    """
    if (isinstance(element, int) or isinstance(element, float)) and element == 0:
        # Exclude 0 and 0.0 from the Falsy set.
        return False
    elif isinstance(element, str) and len(element.strip()) == 0:
        # Include string with one or more empty space(s) into Falsy set.
        return True
    elif isinstance(element, bool):
        # Exclude False from the Falsy set.
        return False
    else:
        # Falsy check.
        return False if element else True

测试:

print("Is empty?\n")
print('"" -> ', is_empty(""))
print('"      " -> ', is_empty("      "))
print('"A" -> ', is_empty("A"))
print('"a" -> ', is_empty("a"))
print('"0" -> ', is_empty("0"))
print("0 -> ", is_empty(0))
print("0.0 -> ", is_empty(0.0))
print("[] -> ", is_empty([]))
print("{} -> ", is_empty({}))
print("() -> ", is_empty(()))
print("[1, 2] -> ", is_empty([1, 2]))
print("(3, 5) -> ", is_empty((3, 5)))
print('{"a": 1} -> ', is_empty({"a": 1}))
print("None -> ", is_empty(None))
print("True -> ", is_empty(True))
print("False -> ", is_empty(False))
print("NaN -> ", is_empty(float("nan")))
print("range(0) -> ", is_empty(range(0)))

输出:

Is empty?

"" ->  True
"      " ->  True
"A" ->  False
"a" ->  False
"0" ->  False
0 ->  False
0.0 ->  False
[] ->  True
{} ->  True
() ->  True
[1, 2] ->  False
(3, 5) ->  False
{"a": 1} ->  False
None ->  True
True ->  False
False ->  False
NaN ->  False
range(0) ->  True

在Python中,要表示值的缺失,可以为对象使用None值(types.NoneType.None),为字符串使用""(或len() == 0)。因此:

if yourObject is None:  # if yourObject == None:
    ...

if yourString == "":  # if yourString.len() == 0:
    ...

关于“==”和“is”之间的区别,使用“==”测试对象的身份应该足够了。然而,由于操作“is”被定义为对象标识操作,使用它可能比使用“==”更正确。不确定是否有速度上的差异。

总之,你可以看看:

Python内置常量文档页。 Python真值测试文档页。