而不是将变量正确地添加到集合中,例如:
set_to_add_to = set()
set_to_add_to.add("test")
我只是不小心编码了:
set_to_add_to = set()
set_to_add_to = set_to_add_to.add("test")
虽然我明白这不是您应该将项目添加到集合的方式,但让我感到惊讶的是,上述导致 set_to_add_to
取值 None
。我无法弄清楚为什么会发生这种情况:它似乎类似于 int_variable = int_variable + 5
,它可以正常工作。
类似地:
set_to_add_to = set()
new_set = set_to_add_to.add("test")
导致 new_set
取值 None
— 为什么不是将 "test"
添加到 set_to_add_to
然后分配给 new_set
?
最佳答案
首先,重要的是要注意所有函数(包括用户定义函数和内置函数)都会返回一些东西。通常,通过 return
语句很容易看出函数返回的内容。在没有return
语句的函数中,默认返回None
。
现在,了解为什么一些 python 常用函数返回 None 背后的基本原理。
通常,就地修改对象的 python 函数返回 None。
例如:
x = [4,3,7,8,2]
y = sorted(x) #y is now a sorted list because sorted returns a copy!
y = x.sort() # y is now None because x was sorted in place
一个值得注意的异常(exception)是 pop()
函数,它返回被弹出的值。
查看这篇文章以获得更详细的解释:
Is making in-place operations return the object a bad idea?
x = [4,3,7,8,2]
val = x.pop()
#val = 2
#x = [4,3,7,8]
关于python - 如果在分配时将变量添加到集合中,为什么 Python 会分配 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635739/