SKNetworks Family AI 캠프 13기 1주차 회고

¿curious_jin¿·2025년 3월 31일

3월 24일부로 약 6개월 간의 멈출 수 없는 열차가 출발해버렸다...
내가 가장 잘하는 것을 쫓아 화학과를 다니다, 내가 가장 재미있어하고 하고싶어하는 코딩을 따라 여기까지 오게 되었다.

AI 수업을 듣고 싶어 어영부영 독학했던 Python이 도움이 되기는 했는지 첫 일주일은 살만은 했다.

그렇게 남은 점심 시간, 쉬는 시간이나 저녁 시간 등을 이용해 짬짬이 나만의 프로그램도 하나 만들어봤다.

이 시절 혼을 쏟은 기록 겸 살포시..
https://github.com/Jinhyeok33/my_SKN13/blob/3fb25eff1f2278a476f3c12774e6ebbc2fabc50e/Game%20Test_1.ipynb

그렇지만 역시 독학은 독학인가
수업을 듣다보면 문득문득 내가 혼자서는 공부해 볼 엄두도 내지 못했던 개념들이 튀어나왔다.

iterable? 그게 뭔데?

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!

profile
궁금증이 많은 아이

1개의 댓글

comment-user-thumbnail
2025년 4월 1일

좋은 회고록 잘 읽었습니다. 앞으로도 열심히 회고록 잘 써주세요.

답글 달기