python 输出内容区别

s={}
s.setdefault('3','6')
'6'
s
{'3': '6'}
sss={}.setdefault('3','6')
sss
'6'

为啥两个都是字典输出内容不一样

阅读 2.4k
4 个回答

setdefault

setdefault 的返回值是第二个参数,不是字典本事。

sss={}.setdefault('3','6') 这个是把 setdefault 的返回值赋给了 sss

因为第一个s是字典,第二个ssssetdefault()方法的返回值,不是字典。

第一个你打印的是s对象,是个字典
第二个你打印的是{}调用setdefault()函数的返回值
看看下边这个例子你就明白了

a={}
b=a.setdefault('1','2')
print(a)
print(b)

输出结果是:

{'1': '2'}
2

setdefautkey存在直接返回valuekey不存在则先存入dict,然后返回key对应的values引用的是字典,sss在这里引用的则是setdefault的返回值也就是'6'

def setdefault(self, k, d=None): # real signature unknown; restored from __doc__  
    """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
    pass
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题