此表达式在Python中为真:{}.keys().insert(0,";)==None。为什么?
看看我的Python会话: >>> {}.keys().insert(0, "") == None True >>>{}.keys().insert(0,“”==无 真的 但是: >>>k={}.keys() >>>k [] >>>k.插入(0,“”) >>>k [''] 为什么 PS。谢谢你的帮助!Python的设计非常奇怪-不支持链接:此表达式在Python中为真:{}.keys().insert(0,";)==None。为什么?,python,Python,看看我的Python会话: >>> {}.keys().insert(0, "") == None True >>>{}.keys().insert(0,“”==无 真的 但是: >>>k={}.keys() >>>k [] >>>k.插入(0,“”) >>>k [''] 为什么 PS。谢谢你的帮助!Python的设计非常奇怪-不支持链接: 这就是我的问题的根源…列表。insert返回None;当您打印k时,您正在打印列表的新状态。在案例1中,您正在将返回类型检查为None,该返回类型将评
这就是我的问题的根源…
列表。insert
返回None
;当您打印k
时,您正在打印列表的新状态。在案例1中,您正在将返回类型检查为None
,该返回类型将评估为True
。
Python
insert
返回None
Python支持对不可变对象进行方法链接。在易变对象(如列表)上,这会造成关于是返回新对象还是修改现有对象的混淆。在可变对象上的此类方法返回None
这一事实让您立即知道现有对象正在发生变化,如果您的假设不是这样,那么您在运行代码时会很快发现,而不是在需要跟踪错误假设导致的棘手错误时。@kindall。感谢您的解释,因为我开始思考Python为什么不提供链接+1.
>>> k = {}.keys()
>>> k
[]
>>> k.insert(0, "")
>>> k
['']