본문 바로가기

python

(2)
[Python] 얕은 복사가 일어나는 경우 얕은 복사란 배열 a에 배열 b를 할당하면 배열이 새로운 메모리 공간에 같은 값이 할당되는 것이 아니라 같은 메모리 공간을 바라보게 된다. 그렇게 되면 b를 변경했을 때 a까지 변경된다. 단일 값을 저장하는 변수에 대한 배정은 얕은 복사가 일어나지 않는다. a = [1, 2, 3, 4] b = a b[0] = 2 print(a) # [2, 2, 3, 4] 방심할 수 있는 얕은 복사가 일어나는 경우 1. *연산을 이용해서 만든 배열 arr = [[0]]*4 print(arr) # [0, 0, 0, 0] arr[0][0] = 1 print(arr) # [1, 1, 1, 1] 2. 배열에 다른 배열 배정 : 이 경우는 가장 대표적이지만 아래와 같은 경우 방심할 수 있다. a[i] = a[i-1] # a가 이차..
[Python] nonlocal, global로 변수의 scope 변경하기 (파이썬에서 전역변수 사용하기) 👀 다른 scope에 있는 변수를 사용할 때 문제 case 1. 더 넓은 범위에 있는 변수 '읽기'는 가능 아래와 같이 전역변수로 n을 선언하고 이를 함수 내에서 읽기만 하는 경우 에러가 나지 않는다. n = 0 def func(): print(n) # 0 func() 아래와 같은 경우도 마찬가지이다. 전역 변수는 아니고 func2를 감싸고 있는 func1에서 설정한 변수지만 func2 내부에서 사용이 가능하다. def func1(): n = 1 def func2(): print(n) # 1 func2() func1() 이렇게 변수를 선언한 곳보다 안쪽에 위치한 함수에서는 변수를 읽을 수 있다. case2. 더 넓은 범위에 있는 변수 '변경'은 불가능 n = 0 def func(): n += 1 # er..

반응형