我想请教您关于Python中切片运算符的行为的帮助.
L[:]
创建列表的浅表副本L.为了验证它,可以打印
id(L), id(L[:])
并注意它们是不同的.del L[:]
从原始对象中
删除引用.它使原始列表为空 - 而不是它的浅层副本.当然我同意创建一个浅拷贝,然后删除它的引用,没有多大意义,所以我理解这里我们想要在原始列表上操作.是否有任何规则说当切片运算符创建一个浅拷贝而不是什么时候?如何在不手动测试的情况下了解它?
我搜索了这个并找到了以下主题:
但不幸的是他们没有回答我的问题,至少我没有看到它.
为什么Python解释器用于repr()打印表达式?
例如:
>>> S = "First line.\nSecond line."
>>> S
'First line.\nSecond line.'
Run Code Online (Sandbox Code Playgroud)
当然我可以str()通过print语句触发:
>>> print S
First line.
Second line.
Run Code Online (Sandbox Code Playgroud)
但是为什么str()在交互模式下不会默认触发?在许多方面,它似乎是一个更好的选择.
python ×2