copy_behaviors(original) that demonstrates copying. Create ref by simple assignment (ref = original), and copy_a using slicing (original[:]), and copy_b using list(original). Then append the integer 999 only to original. Return a tuple (ref, copy_a, copy_b) reflecting their final states, showing that ref changed but the two copies did not.original = [1, 2, 3]
([1, 2, 3, 999], [1, 2, 3], [1, 2, 3])
ref points to the same list object as original, so it reflects the append; copy_a and copy_b are independent lists.
Assignment (=) does not create a new list — it creates another name for the same object.
Slicing [:] and list() both build a new, independent list.