- imutable한 객체(bool, int, float, str, tuple) 의 경우 연산자를 사용해 값을 변경하려 할 때 마다 새로운 객체를 생성에서 할당한다.
- mutable 한 객체 (dict, list, set)는 재할당하지 않고 값을 변경한다고 한다. (slicing, indexing 등)
따라서 아래의 결과가 나오는 듯 하다.
[mutabe 값 수정할 경우]
함수 안에서 한 수정이 그대로 함수 밖에 적용된다.
1. 매개변수에 mutable을 넣어줬을 때
전역변수도 같이 바뀐다.
def func1(mutable):
mutable[0] = 12
mutable = [1, 2, 3]
func1(mutable)
print(mutable)
# [12, 2, 3]
2. 매개변수에 아무것도 넣어주지 않았을 때
전역변수도 바뀐다.
def func1():
mutable = 12
mutable = [1, 2, 3]
func1(mutable)
print(mutable)
# [12,2,3]
[mutable을 재할당 하기 위해서는]
global 선언해야 재할당 할 수 있다.
1. global 변수를 쓰지 않았을 때
전역 변수에 적용되지 않는다.
def func1(mutable):
mutable = []
immutable = 1
mutable = [1, 2, 3]
func1(mutable)
print(mutable)
# [1, 2, 3]
2. global 변수를 썼을 때
전역 변수에 적용된다.
def func1():
global mutable
mutable = 3
mutable = [1, 2, 3]
func1()
print(mutable)
'근황 토크 및 자유게시판' 카테고리의 다른 글
[CMD] dir 명령어 옵션 (0) | 2022.07.09 |
---|---|
[스쿨선발대] 데이터 사이언스 스쿨 두 달 후기 (0) | 2022.06.30 |
모듈 관리자 ( pip, conda ) (0) | 2022.06.01 |
pandas에서 xlsx 파일 열려면 (0) | 2022.06.01 |
[TIP] 파이썬 모듈에 대한 네이밍 규칙 (0) | 2022.05.25 |