! ! 코딩할 때는 휴먼 에러가 생기지 않을 방향으로 작성해야 한다 ! !
! ! 파트 분배시 input과 output을 미리 정해두면 좋다 ! !
! ! 주석을 잘 활용하자 ! !
mutable한 객체 :
객체 생성 이후에도 내부 상태가 변경될 수 있는 객체로, 리스트(list), 딕셔너리(dict), 집합(set) 등이 포함된다.
immutable(불변)한 객체 :
객체 생성 후 내부 상태가 변경될 수 없는 객체로, 문자열(str), 숫자(int, float 등), 튜플(tuple) 등이 포함된다.
a = "hello world"
b = ["hello", "world"]
a_ = a
b_ = b
a_ += "!!"
b_.append("!!")
print(a) # hello world
print(b) # ['hello', 'world', '!!']
리스트의 복사본 만들기
for monster in monsters[::]:
if monster.current_hp <= 0:
monsters.remove(monster)
monsters 리스트를 돌며 쓰러트린 몬스터는 삭제.
근데 여기서 리스트가 변경되어 버리기 때문에 복사본을 돌게 해주는 것!
얕은 복사(shallow copy)
원본 객체의 내부 객체들을 참조하는 복사본을 만드는 것.
원본 객체들 중 일부가 변경될 경우, 복사본에도 영향을 미친다.
copy 모듈의 copy() 함수나 슬라이싱 연산자([:])를 사용하여 수행할 수 있다.
깊은 복사(deep copy)
원본 객체와 별개의 객체를 생성하는 복사 방법.
원본과 복사본의 객체는 모두 독립적이고 변경 내용이 영향을 미치지 않는다.
copy 모듈의 deepcopy() 함수를 사용하여 수행할 수 있다.
import copy
a = [[1, 2], [3, 4]]
# 얕은 복사
b = copy.copy(a)
# 깊은 복사
c = copy.deepcopy(a)
'Python > 공부' 카테고리의 다른 글
파이썬 컴프리헨션(Comprehension) / 다차원 배열_NumPy() (0) | 2023.04.04 |
---|---|
파이썬 setattr() getattr() (0) | 2023.03.31 |
파이썬 뒤집기 슬라이싱 reverse() join() pop() (0) | 2023.03.29 |
알아두면 유용한 파이썬 사용 꿀팁 단축키 (0) | 2023.03.29 |
파이썬 종료 close() quit() exit() sys.exit() os._exit() (0) | 2023.03.28 |