inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

프로그래밍, 데이터 과학을 위한 파이썬 입문

Function Concept II

예시문제 질문

185

송동규

작성한 질문수 2

1

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 변수, 지역변수 개념으로 설명이 안되네요.

감사합니다.

bigdata python

답변 1

1

TeamLab

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