python - 如果在分配时将变量添加到集合中,为什么 Python 会分配 None

标签 python set

而不是将变量正确地添加到集合中,例如:

 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/

相关文章:

java - 使用 LinkedHashSet 存储随机数但有重复

python - Django:创建新项目时,弹出 "django-admin.py: command not found"错误

c++ - 函数的两个版本不会产生相同的结果

algorithm - 用给定的间隔覆盖所有数字

python - 测试在 Python 中点击一个矩形

python - 尝试加入 2 个数据帧,并将某些数据作为数组存储在一个单元格中

python : insert 2 dimensional array into Mysql Database

python - Pandas :选择每组中的前几行

python - 从多个文件导入变量

java - 如何为不同的设备分辨率设置以下值?