내장함수 Built-in Function 이라고 한다. 내부에 구축된 기능 정도로 해석할 수 있다. 파이썬을 설치하면 여러가지 라이브러리와 모듈이 함께 설치된다고 이야기했다. 우리가 파이썬 인터프리터를 열면 처음부터 사용할 수 있는 기능들이 많이 있다. 무에서 유를 창조하는 행위지만 완전히 원시시대부터 시작하는 것이 파이썬을 다루는 자세는 아니다.
내장함수에 이미 기능이 구현되어 있으면 그것을 쓰면 된다. 내장함수는 수십년간 많은 소프트웨어 환경에서 검증되었기 때문에 신뢰성이 높다.
내장함수의 리스트는 파이썬 공식문서에서 볼 수 있다.
https://docs.python.org/3/library/functions.html
내장함수를 살펴보면 그동안 많이 써왔던 print나 input 함수도 있다. 길이를 재는 len도 있고 종류가 많다. 내장함수는 어떤 프로그램을 작성하건 일반적으로 필요하다고 생각되는 기능들을 모아 놓은 것이다. 그러니까 지금 다 외우거나 할 필요는 없다. 이미 자주 써봤던 print 함수 처럼 자주 접하면 그냥 외워진다.
라이브러리를 한번 슥 읽어보고 배워둬야할 함수는 예제를 실행해본다. 그러면 나중에 프로젝트를 진행하다가 필요한 함수를 좀 더 쉽게 찾을 수 있다.
파이썬 온라인 문서는 한글도 지원된다. 영어가 부족하면 한글 문서를 귀하게 알고 열심히 읽어야 한다.
한글을 읽어보고 다음에 동일한 내용의 영어 문서를 읽으면 영어 실력도 향상된다.
이렇게 읽어보면 무슨말인지 알 수 있다. 이해하겠으면 인터프리터에서 바로 실행해본다.
절대값 반환하는 함수정도야 파이썬을 배우면 어렵지 않게 구현할 수 있을 것이다. 그러나 있는 내장함수를 사용하는 것이 좋다. 다른 사람이 코드를 봤을 때 내장함수는 더 쉽게 알아 볼수 있다. 또는 이름의 문제도 있다. 비슷한 기능을 구현하려다 보면 이름도 비슷해지기 마련이다. 내장함수를 사용하면 혼동을 피할 수 있다. 굳이 자신의 함수를 만들고 싶으면 자신의 함수나 클래스에 내장함수를 포함시키면된다.
이 포스팅에서는 Python doc의 모든 내장함수를 다루지는 않는다. 몇 가지 주요한 내장함수를 살펴본다.
* all(iterable)
iterable 의 모든 요소가 참이면 (또는 iterable 이 비어있으면) True 를 돌려줍니다. 다음과 동등합니다.
def all(iterable):
for element in iterable:
if not element:
return False
return True
iterable 의 요소를 검사한다. 0은 False로 취급하기 때문에 False가 있으면 False를 리턴한다.
* class bool([x])
표현식의 BOOL 값을 리턴한다.
* chr(i)
유니코드의 문자를 반환한다. ord(i)의 반대이다.
*dir( 객체 )
인자가 없으면 현재 지역(name space)의 이름들의 리스트를 리턴한다. 해당 객체의 유효 attribute 리스트이다. (함수)
* enumerate (iterable)
iterable의 인덱스와 값을 돌려준다. iterable 다음에 start = 0 값을 조정하면 시작인덱스 위치를 조정할 수 있다.
* eval(표현식)
문자열 입력을 받아 표현식으로 바꿔 실행한 값을 돌려준다. 사용자 input 값을 처리할 때 유용하다.
* filter()
말 그대로 걸러주는 함수다. 무엇을 거르냐 함수를 거른다. 함수와 인자들의 리스트를 받아 하나씩 실행해보고 참으로 검증된 값을 돌려준다. 리스트 함수로 값을 가져온다.
*format
포맷은 format_spec의 방식으로 값을 바꿔준다. 이것은 내용이 많고 복잡하다. 공식문서를 참조한다.
https://docs.python.org/ko/3/library/string.html#formatspec
* globals()
전역 변수 테이블이다. 모듈도 있고 여러가지가 들어있다. 전역에서 무엇을 사용할 수 있는지 확인할 때 사용한다.
* help( 객체 )
도움말을 꺼내온다. 상당한 양의 도움말을 찾을 수 있다.
* id ( 객체)
인스턴스가 같은 것인지 비교할 때 사용한다.
* input 과 print 함수는 별도 포스팅에서 다룬다.
https://digiconfactory.tistory.com/14?category=872629
*type
클래스 타입을 리턴한다. 확인해보면 모든 파이썬의 자료형은 클래스로 만들어져 있다.
이밖에도 파이썬의 자주 쓰는 함수들(range,map,open, list, len) 등이 있으나 이 포스팅에 더 추가하지는 않았다. 개별적으로 깊이있게 봐야하는 내용들은 자료를 더 찾아서 별도의 포스팅에 작성할 것이다. (input , print 등)
파이썬에서 대체적으로 앞부분 챕터에서 키워드와 내장함수를 보여준다. 입문하는 사람들은 이 무언의 압도적인 단어들 앞에서 숨을 죽일 수 밖에 없다. 그러나 그럴 필요가 전혀 없다. 저 키워드를 모두 외워서 쓰는 사람도 드물것이며 큰 의미도 없다.
저기에 보이는 단어들은 다 중요하기 때문에 keywords라는 말이 붙은 것이다. 저 단어들 하나하나가 다 챕터가 될 수 있을 정도로 내용이 있다. class 같은 키워드는 챕터 하나가 아니라 OOP를 제대로 배우려면 몇년이 걸릴지 모른다.
대학에서 4년간 배워도 다 못배워서 대학원에 간다. 거기서 다 배운다는 보장이 없다. 어려우니까 대학에서 연구하는 것이다
그러니까 지금부터 배울 것들의 큰 그림, 앞으로 파이썬의 세계를 탐험할 지도 정도로 받아들이면 된다.
내장함수도 마찬가지다. 키워드가 큰 지도같은 존재라면 내장함수는 탐험을 하기 위한 기본 스킬과 테크닉이다. 내장 함수를 통해서 파이썬의 깊은 곳을 헤집고 다닐 수 있다. 스킬과 테크닉은 하루아침에 습득되지 않는다. 훈련을 받고 연습을 해야 몸에 체화된다. 그러니까 조바심 낼 필요가 없다.
키워드와 내장함수를 어느정도 활용할 수 있게 되면 이제부터는 파이썬으로 꽤 의미있는 앱을 작성할 수 있을 것이다. 이제 부터는 외부 모듈과 프레임워크를 배우는 단계로 넘어가야 한다.
하다가 진행이 안되면 다시 돌아와서 한번 더 기초를 들여다 봐도 된다. 어쩌면 학습이란 쭈욱 상승하여 올라가는 것이 아니라 지그재그 오르락 내리락하는 곡선인 것 같다. 운동선수들 처럼 코딩을 배우는 것에 슬럼프라는 것도 있다.
다음 포스팅에서는 외장함수 즉 라이브러리 대한 내용이다.