예시문제 질문
185
작성한 질문수 2
def spam(eggs):
eggs.append(1)
print(ham, eggs)
eggs=[2,3] #기존의 eggs를 끊고 새로운 eggs를 만든다.
print(eggs)
ham=[0] # ham이라는 공간 안에 [0]가 있다.
spam(ham) # ham 이라는 공간을 eggs도 또한 가르키고 있다.
print(ham)
위 예시의 경우 ham공간에 [0]이 있고
spam(ham)하는 순간 [0]이 있는 공간을 ham과 eggs가 같이 가르키고
eggs.appen(1)하면 ham와 eggs가 동시에 가르키고 있는 공간에서 [0,1]이 되어
ham, eggs를 각각 프린트하면 같은 값이 나온다고 설명하셨는데
def test(t):
t=t+1
print(x,t)
t=20
print("In function:", t)
x=10
print("before:", x)
test(x)
print("after:", x)
강의의 다른 예시 문제를 변형해서 만들어 봤는데
이 경우도 마찬가지로 x라는 공간에 10이 있고, test(x)하는 순간
10이라는 공간을 x, t가 동시에 가르키고
t=t+1하면 10이 11이 되고
이를 x, t가 동시에 가르키고 있으니
print(x), print(t)를 하면 같은 값이 나와야 하는 것 아닌가요?
뒤에 변수의 scope 부분에서
x=10은 global 변수, t는 지역 변수라는 개념으로 설명을 할 수는 있는데
그러면 ham, eggs 문제가 global 변수, 지역변수 개념으로 설명이 안되네요.
감사합니다.
답변 1
1
list와 int 변수의 차이인데요. list는 기본적으로 list안에 있는 element의 메모리 주소 값을 가지고 있습니다. 그래서 eggs.append 라는 명령은 그 주소 값에서 더한다라는 의미이므로 기존 메모리에서 하나가 추가됩니다.
그러나 eggs = [xxx] 하는 순간 새로운 주소값이 할당 되기 때문에 기존에 같은 주소를 가르키고 있던 값이 사라지게 됩니다.
atom warning 글
0
337
0
backend.ai 설치 오류
0
315
0
backend.ai 설치 시 에러 발생
0
740
1
과제 제출 시 hash key is already used 문제 발생
0
445
0
install.bat 오류
0
478
0
과제 제출 시 hash key is already used. 해시키 문제 문의 드립니다.
0
308
1
"Hash key is already used."으로 인한 과제 제출 실패 문의
0
303
1
과제 제출 시 에러가 발생합니다
0
271
1
인트로 강의가 없습니다
0
180
0
사진 링크가 깨져있습니다
0
270
0
slack아직 사용할 수 있는건가요?
0
173
0
강의자료
0
398
4
'backend.ai'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
0
438
2
에러확인부탁드립니다.
0
258
1
number of cases 코드 질문
0
206
1
split 관련 질문입니다!
0
229
1
함수 definition 관련 질문입니다.
0
296
1
is_digit 함수 구현
0
306
1
Map & Reduce 강의 8분 15초
1
233
1
keyword parameter
0
239
1
submit.bat 오류
0
196
2
matrix_transpose 결과값이 뭐죠?
0
176
0
value를 넣으면 key를 반환하는 함수
0
131
0
첨부파일의 unit test는 어떻게 사용하나요?
0
267
0





