안녕하세요. 바른 호랑이입니다.
이번 게시글에서는 Python의 내장 함수와 외장 함수에 대해 알아볼 예정입니다.
- 내장 함수(built-in function)
ㆍ특정 기능을 구현 프로그램을 작성할 경우 먼저 살펴봐야 할 것은 기존의 프로그램들 중에 하려고 하는 프로그램과 유사하거나 동일한 내용을 구현한 것이 있는지 확인하는 작업이며, 공부를 위한 목적이 아니라면 기존 프로그램을 사용하는 것이 훨씬 유용하고 안정적임. 이는 이미 구현되어 있는 프로그램이나 함수의 경우 수없이 많은 테스트 과정을 거쳤기에 이미 검증되어 있기 때문임.
# abs(x) : 특정 숫자를 입력받았을 경우 절대값을 출력해주는 함수
print(abs(-111), abs(111), sep=' / ')
# all(x) : 리스트, 튜플, 문자열, 딕셔너리, 집합 등과 같이 반복가능한 자료형 x를 입력인수로 받아 x가 모두 참이면 True를 하나라도 거짓이면 False를 반환하는 함수
print(all([1, 2, 3, 4]), all([1, 2, 3, 0]), sep=' / ')
# any(x) : x중 하나라도 참이 있을 경우 True, 모두 거짓이면 False를 반환하는 함수
print(any([1, 0, 0 , 0]), any([0, 0, 0, 0]), sep=' / ')
# chr(x) : ASCII 코드값을 입력으로 받아 코드에 해당하는 문자를 출력하는 함수
print(chr(104)+chr(105))
# dir(x) : 객체가 가지고 있는 변수나 함수(메서드)를 보여주는 함수
print(dir([1, 2, 3]))
print(dir(1))
# divmod(a, b) : a를 b로 나눈 몫과 나머지를 튜플형태로 반환하는 함수
print(divmod(7, 3))
# enumerate(x) : 반복가능한(iterable) 자료형 x를 입력받아 인덱스 값을 포함하는 enumerate 객체를 반환하는 함수
print(enumerate(['first', 'second', 'third']))
for i, j in enumerate(['first', 'second', 'third']):
if i == 2:
print(i, j)
else:
print(i, j, end=' / ')
# eval(expression) : 실행 가능한 문자열(1+2, 'hi' + 'a')등을 입력받아 문자열을 실행한 결과값을 반환하는 함수
# 보통 입력받은 문자열로 python 함수나 클래스를 동적으로 실행하고 싶은 경우에 사용함.
print(eval("1+2"), eval("'hi'+'a'"), sep=' / ')
# filter(function, args) : 함수와 반복가능한 자료형을 입력받아 첫번째 함수 실행결과 참인 것들만 묶어서 반환해주는 함수
def positive(x):
return x > 0
print(list(filter(positive, [0, 7, -5, -3, 1])))
print(list(filter(lambda x: x>0, [0, 7, -5, -3, 1])))
# hex(x) : 정수값을 16진수(hexadecimal)로 변환하여 리턴하는 함수
print(hex(234), hex(3), sep=' / ')
# id(object) : 객체를 입력받아 객체의 고유 주소값을 리턴하는 함수
a = 3
b = 3
print(id(3), id(a), id(b), id(-420012),sep=' / ')
# input([prompt]) : 사용자 입력을 받는 함수
# int(x) : 문자열 형태의 숫자나 소수점이 있는 숫자등을 정수형태로 반환하는 함수
print(int('123'), int(12.123), sep=' / ')
# isinstance(object, class): 해당 객체가 그 클래스의 인스턴스인지를 판단하여 참이면 True를 거짓이면 False를 반환하는 함수
class Test:
pass
a = Test()
print(isinstance(a, Test))
# lamdax 인수1, 인수2, ... : expression : def와 같이 함수를 만들때 사용하며, 보통 한줄로 간결하게 작성할 때 사용함.
lambda_list = [lambda x, y: x+y, lambda x, y: x*y]
print(lambda_list[0](87, 85), lambda_list[1](87, 85), sep=' / ')
# len(x) : 입력값의 길이를 반환하는 함수
print(len('test message'), len([1, 2 ,3]), sep=' / ')
# list(x) : 반복가능한 자료형을 입력받아 리스트로 만들어 반환하는 함수
print(list('test'), list((1, 2, 3)), sep=' / ')
# map(function, iterable) : 함수와 반복가능한 자료형을 입력받아 자료형의 각 요소가 함수에 의해 수행된 결과를 묶어서 반환하는 함수
print(list(map(lambda x: x*5, 'test')), list(map(lambda x: x*7, [1, 2, 3])), sep=' / ')
# max(x), min(x) : 반복가능한 자료형을 입력받아 입력 값의 최대(최소)값을 반환하는 함수
print(max([1, 8, 5, 7, 3]), min([1, 8, 5, 7, 3]))
# oct(x) : 정수 형태의 숫자를 8진수 문자열로 바꾸어 반환하는 함수
print(oct(123), oct(45), sep=' / ')
# ord(x) : 문자의 ASCII 코드를 반환하는 함수
print(ord('안'), ord('녕'), sep=' / ')
# range([시작숫자], 종료숫자, [증감간격]) : 입력받은 숫자에 해당되는 범위의 값을 반복 가능한 객체로 만들어 반환해주는 함수
print(list(range(5)), list(range(3, 5)), list(range(-1, 5, 2)), sep=' / ')
# str(x) : 문자열 형태로 객체를 변환하여 반환하는 함수
print(str(100), str(-99), sep=' / ')
# tuple(iterable) : 반복가능한 자료형을 입력받아 튜플 형태로 반환하는 함수
print(tuple([1, 2, 3]))
# type(object) : 입력값의 자료형이 무엇인지 반환하는 함수
print(type('hi'), type(1.333), sep=' / ')
# zip(*iterable) : 동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수
print(list(zip([1, 2, 3], [4, 5, 6])), list(zip('abc', 'efg')), sep=' / ')
- 외장 함수(Library)
ㆍpython은 전 세계 python 사용자들이 만들어 놓은 유용한 프로그램들을 모아 놓은 python library가 존재하며, 필요할 때 해당 라이브러리를 사용할 수 있음.
ㆍsys : python 인터프리터가 제공하는 변수들과 함수들을 직접 제어할 수 있게 해주는 모듈임.
sys.argv는 파일이 넘겨받은 인수들을 리스트 형태로 반환해 주는 함수로 입력받은 인수들을 별도로 사용해야 할 때 사용할 수 있음. d아래와 같은 형태로 tsysargv.py 파일을 작성 후 cmd 창으로 다음과 같이 실행해 주게 되면 아래 사진과 같은 출력결과가 나타남.
# sys.argv의 출력형태 확인용
# 파일 저장 명칭 : tsysargv.py
import sys
print(sys.argv)
실제로는 필요한 인자값에 대한 내용을 정확하게 인지한 상태에서 필요한 인자들을 넣어주어 처리를 진행하게되며, 이를 활용한 간단한 예시는 아래와 같음.
# sys.argv의 기본 응용
# 파일 저장 명칭 : tsysargv_plus.py
import sys
parameter_01 = int(sys.argv[1])
parameter_02 = int(sys.argv[2])
print(f'{parameter_01}과 {parameter_02}의 합은 {parameter_01+parameter_02}입니다.')
sys.exit()는 프로그램 내에서 사용시 프로그램을 중단시키는 명령어로 Ctrl + Z나 Ctrl + D로 대화형 인터프리터를 종료하는 것과 같은 기능을 하며 sys.path는 모듈들이 저장된 위치를 나타내는 명령어로 해당 경로에 있는 모듈들은 경로에 관계없이 import 하여 사용이 가능함. 필요한 모듈이 있다면 append 명령어로 추가 가능함.
import sys
sys.path
ㆍpickle : 객체의 형태를 그대로 유지하면서 파일을 저장하고 불러올 수 있게 하는 모듈임.
import pickle
f_01 = open("test_01.txt", 'wb')
data = {1: "Good", 2: "Morning"}
pickle.dump(data, f_01)
f_01.close()
f_02 = open("test_01.txt", 'rb')
data = pickle.load(f_02)
print(data)
f_02.close()
ㆍos : 환경 변수나 디렉터리, 파일 등의 OS자원을 제어할 수 있게 해주는 모듈임.
import os
os.environ # 시스템의 환경변수 확인용 명령어
import os
print(os.getcwd()) # 현재 위치 확인
os.chdir("/content/game") # 위치 변경
print(os.getcwd()) # 현재 위치 확인
os.chdir("/content") # 위치 변경
print(os.getcwd()) # 현재 위치 확인
import os
print(os.system("dir")) # 시스템 명령어 호출 / 실행 결과는 shell에서 출력되고 프로그램에서는 출력결과를 처리하지 않음.
print(os.popen("dir").readlines()) # 시스템 명령어 호출 후 실행시킨 결과 값을 읽기 모드 형태의 파일 객체로 반환하는 함수.
# os.mkdir('create_test') # 디렉토리 생성
# os.rmdir('create_test') # 디렉토리 삭제(단, 내부에 파일이 없어야 함.)
# os.unlink('test_01.txt') # 파일을 삭제
# os.rename('test_01.txt', 'test_change_name.txt') # 파일 명칭 변경 / 첫번째 인수가 기존 파일의 명칭이고, 두번째 인수가 바꿀 파일의 명칭임.
ㆍshutil : 파일을 복사해주는 python 모듈임.
import shutil
shutil.copy('test_change_name.txt', 'test_copy.txt') # 첫번째 인수가 기존 파일, 두번째 인수가 복사한 파일 명칭임.
ㆍglob : 특정 경로에 있는 파일리스트들을 자료형으로 만들 수 있게 하는 python 모듈로, 필터링을 적용하여 원하는 파일만 가져올 수도 있음.
import glob
glob.glob('/content/sample_data/*')
ㆍtempfile : 임시 파일을 만들어 사용할 필요가 있을 때 사용하기 좋은 모듈로, 중복되지 않는 임시 파일의 이름을 무작위로 만들어 리턴 후 파일을 닫으면 자동으로 삭제해 주는 기능을 가지고 있음.
import tempfile
print(tempfile.mktemp()) # 임시파일이름을 만들어 무작위로 리턴
f = tempfile.TemporaryFile()
f.close() # 생성된 임시 파일이 자동으로 삭제됨.
ㆍtime : 시간과 관련한 여러가지 기능을 사용할 수 있게 만든 모듈임.
import time
print(time.time()) # UTC기준으로 현재 시간을 실수 형태로 리턴하는 함수로 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초 단위로 리턴함.
print(time.localtime(time.time())) # time.time()으로 반환된 실수값을 기반으로, 연도, 월, 일, 시, 분, 초, ... 형태로 바꾸어 주는 함수.
print(time.asctime(time.localtime(time.time()))) # time.localtime(time.time())으로 반환된 값을 보기 쉬운 형태로 리턴하는 함수
print(time.ctime()) # asctime과 동일한 형태로 값을 반환하나 해당 함수는 UTC기준 현재 시간만 반환할 수 있음.
print(time.strftime('%x', time.localtime(time.time()))) # 입력받은 시간 변수를 원하는 형식으로 출력 / 출력형식 종류는 아래 참조 사이트 확인
time.sleep(3) # 반복문이나 웹 크롤링 등에서 사용하여 일정한 시간을 대기하도록 명령하는 함수(인수는 초단위)
ㆍcanlendar : python에서 달력을 볼 수 있게 해주는 모듈임.
import calendar
print(calendar.calendar(2024)) # calendar.prcal(2024)도 동일한 결과를 출력함.
import calendar
calendar.prmonth(2024, 4) # 원하는 월만 출력
# calendar.weekday(2024, 4, 23) # 해당 날짜의 요일 정보를 반환하는 메서드(0 : 월, 1: 화, 2: 수, 3: 목, 4: 금, 5: 토, 6: 일)
import calendar
calendar.monthrange(2024, 4) # 해당월의 1일의 요일 정보와 마지막 날이 몇일인지를 튜플형태로 반환
# 2024년 4월의 1일은 월요일이고 30일까지 있음.
ㆍrandom : 난수를 발생시기는 모듈임.
import random
rand_list_01 = [random.random() for _ in range(5)]
rand_list_02 = [random.randint(1, 100) for _ in range(5)]
print(rand_list_01) # random.random은 0.0 ~ 1.0 사이의 실수값을 무작위로 반환함.
print(rand_list_02) # 지정된 범위내에서 정해진 정수를 반환 / 범위 지정 필수
print(random.choice(rand_list_02)) # 입력받은 리스트에서 무작위 값 1개를 반환하는 함수.
random.shuffle(rand_list_02) # 입력받은 함수를 무작위로 섞어주는 함수.
print(rand_list_02)
ㆍwebbrowser : 시스템에서 사용하고 있는 기본 웹 브라우저가 자동으로 실행되게 하는 모듈임.
import webbrowser
webbrowser.open("https://google.com") # 실행시 해당 URL이 시스템의 기본 브라우저로 열림
'IT & 데이터 사이언스 > Python' 카테고리의 다른 글
[Python] Python의 모듈, 패키지, 예외처리 (0) | 2024.04.23 |
---|---|
[Python] Python의 클래스 (2) | 2024.04.22 |
[Python] Python의 함수, 사용자 입/출력, 파일 편집 (0) | 2024.04.22 |
[Python] Python의 제어문(if, while, for문) (2) | 2024.04.19 |
[Python] Python의 자료형(튜플, 딕셔너리, 집합, 변수)⑵ (2) | 2024.04.19 |
댓글