왜 list에 append를 하는 것은 쓰기로 간주되지 않는 것인가요?
325
작성한 질문수 4
"왜 list에 append를 하는 것은 '쓰기'로 간주되지 않는 것인가요?"
-------------------------------------------------------
리스트일 때는 error가 발생하지 않고, 일반변수일 때는 error가 발생하는 이유가 도대체 무엇인가요?
정말로 존경을 담아서 말씀드리건대 입문강의에서 지금 이 강의까지 매번 감동의 물결 속에서 감사히 들어왔습니다만, 이번 강의에서 이 의문과 관련된 부분은 도무지 이해가 가지를 않습니다. 너무 답답해서 처음으로 질문 올립니다.
2분 36초에서 "위에거를 참조하지 못하고 있는 거예요"라고 하시는데, 그렇다면 클로저 심화(3-1)에서 나온 closure_ex1() 함수에서는 어떻게 내부함수 averager 안에서 series.append(v)를 할 때 '위에거(series = [])'를 참조할 수 있는 것인가요?
바꿔 말하면,
"왜 closure_ex1() 함수에서는, 내부함수 averager에서 nonlocal series 라고 선언하지 않았음에도 불구하고, error 없이 정상적으로 실행되는 것인가요?"
클로져 심화(4-2) 질의응답란에는 "local에서는 nonlocal의 변수를 '읽기'만 가능하고 '쓰기'는 불가능하다"고 설명해주고 계신데요, (nonlocal에 있는) list에 (local에서) append를 하는 것은 '쓰기'가 아닌가요?
이 이슈와 관련하여 질문하는 모든 사람들이 scope의 개념은 선생님에게 설명을 듣고 또 충분히 이해하고 있으나,
list에 append를 하는 것이 '쓰기'로 간주되지 않는 이유에 대해서는 설명을 듣지 못하고 있습니다.
그래서 다시금 한번 더 여쭤보자면,
"왜 list에 append를 하는 것은 '쓰기'로 간주되지 않는 것인가요?"
이것까지 답해주시다보면 너무 깊이 들어가기 때문에, 배려 차원에서 의도적으로 말씀을 안 해주시는 것인가요?
혹시, 이것은
a = [0] -> id(a) -> a.append(3) -> id(a)
b = 3 -> id(b) -> b += 3 -> id(b)
a의 id는 변하지 않고, b의 id는 변화하는 것과 관련이 있는 것인가요?
답변 1
0
좋은 질문입니다.
자료구조를 공부해야 하는 이유이기도 해요
nonlocal <-> local 영역은 기존 id값은 변하지 않고 데이터 추가의 개념으로 이해하시면 됩니다.
즉, 리스트 안에 다음 데이터 영역의 주소 값만 추가 된다고 생각하시면 될 것 같습니다.
https://realpython.com/python-append/
위에 링크를 번역해서 꼼꼼히 읽어보세요.
append 순간 메모리 구조까지 아주 자세히 설명되어 있습니다.
진도미확인 (진도가 안 넘어감)
0
51
1
RuntimeError: There is no current event loop in thread 'MainThread'
0
95
1
chapter 07-01 실행 오류
0
78
1
Chapter05-04 : sum_func의 합이 이중 출력됩니다.
0
90
2
45. 병렬성 2 - Futures(5-1) wait가 의도된 대로 동작하지 않습니다.
0
109
2
멀티스레딩 - 44. 병렬성 1 - Futures(4-2)
0
81
2
chapter05_02 클로저 질문사항 !
0
61
1
LV1 설정
0
95
2
매직 메소드의 호출 방법 차이 문의
0
140
2
왜 numbers리스트를 만들때 str으로 숫자를 감싸나요?
0
106
2
스크랩핑 실습 중 Mac OS 인증서 문제
0
137
1
AsyncIO 멀티 스크랩핑 실습 예제 관련 질문
0
178
1
강의자료가 영상과 다릅니다
0
262
2
closure.cell_contents 초기화 하기 문의
0
139
2
map함수 사용 시, list변환 방법 문의
0
353
2
__mul__ 백터 * 숫지, 백터 * 백터 처리
0
150
1
del처리후 질문입니다.
0
163
1
car_list(car1,car2,car3) 인스턴스 tuple 타입 문의
0
235
1
coroutine에 대한 질문
0
251
1
제너레이터 이터레이터 질문이 있습니다.
0
258
1
atom install package search not working
0
283
1
Magic Method - Not Implemented
0
405
1
가상환경 질문!
0
410
1
병렬처리 추가 질문이 있습니다.
0
254
1





