唱离歌的老鼠 发表于 2020-10-24 21:21:48

【python小白问题】关于集合的一个基础问题

s = set()
s1 = s.add('haha')
为什么打印后,s1是没有值的呢?

但是如果:
s = set()
s.add('haha')
s = s1
这个时候打印s和s1又都是有值的,不太理解为什么不能用第一种写法。

冰河星云 发表于 2020-10-24 21:55:26

第一种写法没有把s赋值到s1里,而只是之添加在s里添加了‘haha’

昨非 发表于 2020-10-24 22:06:16

s1 = s.add('haha')
这个语句,你赋值给s1的不是集合s,而是add()方法的返回值(空)

笨鸟学飞 发表于 2020-10-24 22:08:39

s.add('haha') #表示一个类的方法函数
s1 = s.add('haha')#表示把函数的返回值赋值给s1,函数返回值并不是这个列表本身

深山小兽 发表于 2020-10-24 22:08:57

第一种情况不会都打印不出来,打印s是可以的。s1打印不出来是因为没有被定义成字典。
而s1 = s.add('haha')可以把s1看成是执行s的添加元素的过程,过程结束了就没有了,不会出现任何东西,就像时间过去了就过去了,不会被找到以前的任何东西。所以s1是没有值的。

第二种情况是执行完过程s.add("haha")后,进行了一个s = s1的复制。打印都能打印。

昨非 发表于 2020-10-24 22:09:46

笨鸟学飞 发表于 2020-10-24 22:08
s.add('haha') #表示一个类的方法函数
s1 = s.add('haha')#表示把函数的返回值赋值给s1,函数返回值并不是 ...

重复了{:10_256:}
页: [1]
查看完整版本: 【python小白问题】关于集合的一个基础问题