대상마다 새 목록을 만들면 한 가방에 넣은 글자가 다른 가방에는 보이지 않습니다.
이 장면을 짧은 컴퓨터 글로 옮겨 천천히 확인해 볼게요.
처음이어도 괜찮아요 · 그림부터 시작해요
일반 서점에서는 이런 장면과 닮았어요. “각 손님에게 새 바구니를 준 것과 모두에게 창고의 한 바구니를 가리키게 한 차이와 닮았어요.”
아직 답을 몰라도 괜찮아요. 아래 작은 예시를 보고 먼저 예상해 보세요.대상마다 새 목록을 만들면 한 가방에 넣은 글자가 다른 가방에는 보이지 않습니다. 이 장면을 살펴보는 까닭은 “따로 만든 대상들이 사실은 한 목록이나 사전을 같이 가리켜 한쪽 변화가 다른 쪽에도 번지는 함께 쓰는 모습이에요”라는 기준을 익혀, 비슷해 보이는 두 경우도 안전하게 나누기 위해서예요.
02 · 먼저 해 본 뒤 이름 붙이기
동네책방 대상 카드
이 장면을 짧은 컴퓨터 글로 옮겨 천천히 확인해 볼게요.
책에서 쓰는 정확한 이름은 직접 살펴본 뒤에 붙여요.
표시를 전부 외우지 않아도 괜찮아요. 오른쪽의 쉬운 행동만 먼저 읽으세요.
class Bag:같은 정보와 일을 함께 쓸 새 종류의 설명을 시작해요.
classBag: def __init__(self): self.items = []나중에 이름으로 부를 일 묶음과 받을 자리를 등록해요.
def__init__selfitems=:()[].left, right = Bag(), Bag()앞에서 준비한 일 묶음을 부르고 괄호 안의 실제 내용을 건네요.
leftrightBag=(),left.items.append("x")앞에서 준비한 일 묶음을 부르고 괄호 안의 실제 내용을 건네요.
leftitemsappend().""print(left.items, right.items)괄호 안 내용을 다음 계산으로 보내지 않고 화면에 보여줘요.
printleftitemsright(),.먼저 하나를 고르면 첫 글을 따라 한 결과를 열 수 있어요.
자동으로 생긴 부분과 사람이 직접 정해야 할 약속을 서로 다른 칸에 놓으세요.
만들기, 보여 주기와 비교 중 생긴 부분을 봐요.
들어온 내용이 허용되는지 확인하고 안쪽 정보의 변화까지 막는 일은 별도예요.
인공지능 제안도 한 곳을 바꾼 예로 채택하거나 거절해요.
03 · 이제 내가 해볼 차례
대상마다 새 목록을 만들면 한 가방에 넣은 글자가 다른 가방에는 보이지 않습니다. 이 장면을 살펴보는 까닭은 “따로 만든 대상들이 사실은 한 목록이나 사전을 같이 가리켜 한쪽 변화가 다른 쪽에도 번지는 함께 쓰는 모습이에요”라는 기준을 익혀, 비슷해 보이는 두 경우도 안전하게 나누기 위해서예요.
짧은 글을 먼저 예상하고 직접 확인한 뒤, 대상에 붙은 정보와 시킨 일이 어디에서 왔는지 자기 말로 설명합니다.
04 · 자주 헷갈리는 지점
처음부터 모두 맞힐 필요는 없어요.괜찮아요. 대상과 그 대상에 붙은 정보부터 하나씩 다시 볼까요?
한 번 더 생각해 볼 질문두 대상을 같은 한 덩어리인지, 담긴 내용이 같은지만지를 나누어 적어 보세요.
이렇게 고쳐 생각해요같은 한 대상인지, 담긴 내용만 같은지와 어떤 종류의 설명을 따르는지 따로 확인해야 해요.
한 번 더 생각해 볼 질문“여러 대상이 같은 바뀌는 상자를 함께 쓰는 실수” 장면에서 첫 글과 바꾼 글의 확인 내용에서 무엇이 달라졌는지, “따로 만든 대상들이 사실은 한 목록이나 사전을 같이 가리켜 한쪽 변화가 다른 쪽에도 번지는 함께 쓰는 모습이에요”라는 기준과 “shared mutable state 자체가 언제나 잘못은 아니에요. 다만 누가 가지고, 누가 바꾸며, 동시에 손댈 때 어떻게 맞추고, 언제까지 둘지를 정하지 않으면 위험해요”라는 주의점을 써서 설명해 보세요. 그런 다음 “설명 전체가 함께 쓰는 목록, 미리 넣는 목록과 잠시 보관하는 곳에서 두 대상을 만들어 한쪽 변경이 번지는지 확인해 보세요” 장면에서는 무엇부터 확인할지도 설명해 보세요.
이렇게 고쳐 생각해요첫 글과 한 곳을 바꾼 글에서 처음 달라지는 곳을 찾고, 그 앞과 뒤 모습을 따로 확인해요.
한 번 더 생각해 볼 질문오늘 본 일을 정확한 이름 없이 처음 배우는 친구에게 설명해 보세요.
이렇게 고쳐 생각해요이름보다 먼저 눈앞의 정보와 달라진 행동을 자기 말로 설명해야 새로운 문제에서도 판단할 수 있어요.
05 · 더 궁금할 때만 보기