3/31 TIL

나명흠·2023년 3월 31일
0

스파르타 내일배움캠프 팀과제-
고도화된 턴제 RPG game 만들기

오늘 제출을 끝으로 프로젝트가 마무리 됐다. 까먹고 넘어갔던 것, 과제 리뷰 강의 때 유난히 이해가 안 가는 것, 새롭게 알게 된 것을 오늘 기록하려고 한다.

까먹고 넘어갔던 것

  1. init함수
    init은 클래스가 인스턴스로 실행될 떄 무조건 실행되는 함수.. 라는걸 알고는 있었지만 의식하지 못했던? 경우가 있었다. "init는 당연히 실행 되니까" 라며 작성하지만 다른 함수는 그렇지 않아서 호출하지 않으면 안된다는 걸 잊고 짜다가 아차 싶었던 적이 있다. 잊지말자 기본!!

  2. if문을 사용할 때 dic를 가져와서 쓰는게 가능하다.

  3. os.system("cls")
    import os 하여 콘솔창을 지우는 함수.

잘 받아들여지지 않는 개념

immutable
Mutable

강의 리뷰 떄 나왔던 함수인데, 처음봤다!!
"Immutable" 객체는 생성된 이후에는 값을 변경할 수 없는 객체
"Mutable" 객체는 생성된 이후에도 값을 변경할 수 있는 객체
텍스트로 봤을 때는 아~ 그렇구나 하고 넘어갈 수 있을 것 처럼 보인다.

#immutable : 정수, 문자열, 튜플 등.. 한번 생성된 이후 메모리에서 값이 변경되지 않음. 메모리!! 하지만 변경이 필요하면 새로운 객체가 생성된다

x = 1
y = x
x = 2
print(y)

하면? x가 1인데 y는 x네? 그럼 x가 2면 y도 2구나 !!
응 아니야~ 1이 출력된다. x와 y는 서로 다른 객체를 가리키고 있음!

x = 1
y = x
x = 2
y = x
print(y)

이렇게 해야 2가 출력된다.. 그냥 이거만 있으면 그렇구나 하겠는데 문제는 Mutable이라는 대비되는 개념이 있다는데 있다.

#Mutable : 리스트, 딕셔너리 등.. 이런 객체는 값이 변경될 때마다 메모리!!에서 변경됨.
x = [1, 2, 3]
y = x
x[0] = 4
print(y)

하면? 4,2,3이 출력된다. 상식적으로 끄덕끄덕 할 수 있다.
도대체 왜 이렇게 나눠 놨는지.. 이해를 할 수 없다.. 나는 그냥 받아들이지를 못 한다.. 매번 이해를 위해선 납득이 되어야 하는데 납득이 안되니 도대체 왜?! 란 의문을 가진다.

.. 어쨌든 그렇다고하니 외워야지! 일단 리스트와 딕셔너리만 mutable이고 변경할 수 있다고 기억하자!!

새롭게 알게 된 것

enumrate 함수

level = ["lv.1", "lv.2", "lv.3", "lv.4", "lv.5"]

for index, lv in enumerate(level): #여기 (lever, 1)을 하면 0이 아니라 1부터 출력. 0이 기본값
    print(index, lv)
0 lv.1
1 lv.2
2 lv.3
3 lv.4
4 lv.5

의 값을 출력한다. 신기... 하면서도 잘 써먹으려나..? 싶긴 하다!

이렇게 이번 프로젝트 끝! 오늘의 TIL도 끝!

profile
가보자고

0개의 댓글