3월 24일부로 약 6개월 간의 멈출 수 없는 열차가 출발해버렸다...
내가 가장 잘하는 것을 쫓아 화학과를 다니다, 내가 가장 재미있어하고 하고싶어하는 코딩을 따라 여기까지 오게 되었다.
AI 수업을 듣고 싶어 어영부영 독학했던 Python이 도움이 되기는 했는지 첫 일주일은 살만은 했다.
그렇게 남은 점심 시간, 쉬는 시간이나 저녁 시간 등을 이용해 짬짬이 나만의 프로그램도 하나 만들어봤다.
이 시절 혼을 쏟은 기록 겸 살포시..
https://github.com/Jinhyeok33/my_SKN13/blob/3fb25eff1f2278a476f3c12774e6ebbc2fabc50e/Game%20Test_1.ipynb
그렇지만 역시 독학은 독학인가
수업을 듣다보면 문득문득 내가 혼자서는 공부해 볼 엄두도 내지 못했던 개념들이 튀어나왔다.
for i, ki in enumerate(-----):
이건 내가 독학 시절 유용하게 외워 사용하던 구문이었다.
index와 list 원소를 같이 쓸 수 있게 해준다니 나에겐 천사와도 같은 구문이었지만.. 바로 이 친구로부터 비극이 시작되었다.
저 친구가 Arguments 로 받는 자료형이 바로 iterable..@@#$
iterable 객체란 원소를 하나 하나 뽑아 사용할 수 있는 자료형을 말한다. 진짜 널리고 널렸다.
내가 알던 list, tuple 외에도 set, list comprehension 등등 iterable에 속하지 않는 자료형을 찾는 것이 더 힘들어보였다.
for i in range(10): 에 쓰이는 range()?
help(range) -> range object
가장 손에 익은 이 구문도 help()의 힘을 빌려보자면 range라는 자료형에 속한다는 듣도보도 못한 사실을 알 수 있고 이 역시 iterable에 속한다. 그럼 대체 iterable이 아닌게 뭔데??
참고로 눈에 띄는 족족 help() 함수에 넣어보는 습관도 이 iterable 덕분에 생기게 되었다.
이 내용을 배운 시점을 기준으로 VScode의 모든 코드들을 객체로서 바라보기 시작하게 된 것 같다.
함수가 일급시민이라는 것은 함수가 다른 함수의 Arguments로도, return 값으로도 사용될 수 있으며 심지어 함수 그 자체를 변수에 그냥 냅다 툭 대입할 수도 있다는 뜻이다.
..... 셋 중에 하나도 몰랐다.
def say_hello():
print('Hello World!')
say_hello() # 함수를 호출
say_hello # 함수 객체 자체를 호출
hi = say_hello # 함수의 주소지를 hi에 부여
h_i_h_i = say_hello() # 함수가 호출되고 남은 return 값이 h_i_h_i에 저장
python이 객체 지향 프로그래밍이라는 내용을 처음 들었던 시절, 객체를 그저 object... 그 비슷한 어느 느낌으로 생각하고 넘어갔었다.
객체란 메모리(RAM)상에 실존하는 어떠한 데이터 값으로, 종류나 타입 따위가 아닌 실제 대상을 의미한다.
예컨대, 함수를 정의한 순간 함수는 하나의 객체가 되어 그 구조와 의미를 지닌채로 메모리상에 저장된다.
그렇기에 위 구문에서 hi 를 터미널에 찍어보면 <function__main__.say_hello()> 와 같이 function type의 객체가 형성되어 있음을 확인할 수 있는 것이다.
그렇다면 함수 객체 자체를 변수에 넣지 않고 함수를 호출한다면??
function type의 경우 호출되면 함수가 자기 할 일을 마친 후 return 값을 내놓게 설계되어 있다. 위의 경우 별다른 return 값이 주어지지 않았기에 자동적으로 None 을 return 하게 되고 h_i_h_i는 None을 받게 된다.
이러한 작동 원리를 알고나니 함수가 일급시민으로서, 하나의 객체로서 어디든 사용될 수 있다는 점이 그리 이상하게 느껴지지는 않았다.
만족스러웠다.
혼자 길을 찾을 때 느끼던 막막함에 대한 길을 제시해주실 강사님을 만나니 한 걸음 또 한 걸음 나아감에 있어 의심이 들지 않았다.
느리지만 나아간다는 것은 발전 가능성이 있다는 뜻이고, 나아갈 의지가 있다는 것은 내 길에 확신이 들기 때문이다.
PCCE Lv.3 에 위치한 나는 한 달 뒤 있을 PCCP Lv.3 을 목표로 다시금 도전할 생각이다.
이만 Bye!
좋은 회고록 잘 읽었습니다. 앞으로도 열심히 회고록 잘 써주세요.