2024-04-23 08:00:34 发布
网友
我对切片操作感到困惑。你知道吗
>>> s = "hello world" >>> y = s[::] >>> id(s) 4507906480 >>> id(y) 4507906480 # they are the same - no new object was created >>> z = s[:2] >>> z 'he' >>> id(z) 4507835488 # z is a new object
切片操作遵循什么分配规则?你知道吗
对于大多数内置类型,切片总是一个浅拷贝。。。从这个意义上说,修改副本不会修改原件。这意味着对于不可变类型,一个对象算作其自身的副本。^{} module也使用“copy”这个概念:
>>> t = (1, 2, 3) >>> copy.copy(t) is t True
对象可以自由地使用它们选择的任何分配策略,只要它们实现它们所记录的语义。y可以是与s相同的对象,但是z不能,因为s和z存储不同的值。你知道吗
y
s
z
对于大多数内置类型,切片总是一个浅拷贝。。。从这个意义上说,修改副本不会修改原件。这意味着对于不可变类型,一个对象算作其自身的副本。^{} module 也使用“copy”这个概念:
对象可以自由地使用它们选择的任何分配策略,只要它们实现它们所记录的语义。
y
可以是与s
相同的对象,但是z
不能,因为s
和z
存储不同的值。你知道吗相关问题 更多 >
编程相关推荐