파이썬 외장함수

윤태영·2023년 11월 23일
0
post-thumbnail

이미지 출처: https://wikidocs.net/192339

오늘은 저번시간에 이어서 외장함수를 알아보겠습니다.

  • 내장함수는 파이썬 인터프리터가 기본적으로 가지고 있는 것(기본적인 기능을 수행하는 것들이 많다.)
  • 외장함수는 어떤 인정을 받은 것들로 전 세계적으로 외부 개발자들에 의해서 개발, 파이썬 사용자들이 필요에 의해서 만들어진 것
  • 실제 프로그램 개발 중 자주 사용
  • 종류 : sys, pickle, shutil, temfile, time, random 등

외장 함수 기본 실습

  • 외장 함수 설명
  • 중요한 외장 함수
  • 각 함수 예제 실습
  • os, sys, time 중요

sys 📕

파일들을 외부에서 실행할때 어떤함수에서 우리가 인자로 넘기듯이, 실행할 때 어떤 값들을 파이썬에 전달해서 그값이 1일경우에는 1번모드로 실행, 2일 경우에는 2번모드로 실행, 이런식으로 어떤 argument를 받을수 있다.

import sys
print(sys.argv)
# 실행하니까 현재 실행되는 파일이 리스트형식으로 첫 번째로 온다.
# 두 번째 콤마를 찍고부터는 실행할 때 전달한 어떤 값들을 받을 수 있다.
# 초보분들은 이런 속성값이 있다고만 알고 있어도 됩니다.
>> ['C:\\Users\\yount\\Desktop\\Python +\\velog연습.py']

sys.exit() 📕

프로그램을 강제종료하는 매우 위험한 함수이다.
이 구문을 만나면 프로그램이 종료되기 때문에 위험합니다.😮

import sys
sys.exit()

sys.path 📕

모든 패키지들의 위치를 알려준다

import sys
print(sys.path)
>>> ['C:\\Users\\yount\\Desktop\\Python +', 'C:\\Users\\yount\\AppData\\Local\\Programs\\Python\\Python311\\python311.zip', 'C:\\Users\\yount\\AppData\\Local\\Programs\\Python\\Python311\\Lib', 'C:\\Users\\yount\\AppData\\Local\\Programs\\Python\\Python311\\DLLs', 'C:\\Users\\yount\\AppData\\Local\\Programs\\Python\\Python311', 'C:\\Users\\yount\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages']

pickle 📕

  • 객체 파일 읽기, 쓰기
  • 파이썬에서 읽을 수 있는 데이터 타입을 파일로 쓸 수 있다.
  • 어떤 클래스나, 변수 메소드 이렇게 클래스 안에서 이루어진 어떤 파이썬의 자료형을 쓸때는, 즉 이 상태로 코드를 쓰고 이 객체자체를 컴퓨터에 저장가능하다.

자세한건 나중에 파일을 읽고 쓰는 방법을 배울때 알아보겠습니다.

import pickle 

open,close (쓰기) 📕

  • open함수를 사용하며 첫 번째 인자는 내가 쓰고 싶은 어떤 파일에 대한 정보 기재
  • 확장자는 마음대로 한다.
  • 우리가 pickle로 쓴 것들은 읽을 때도 파이썬으로 읽어와서 우리가 쓴 dictionay type을 읽기 가능
  • 파이썬에서 사용할 수 있는 어떤 객체, class, dictionay, list, tuple을 저장장치에 쓰고 읽을 때 사용하는 것이 pickle
import pickle 
# obj(object)는 확장자
# wb는 write binary로 옵션입니다. 다음시간에 자세히 보겠습니다.
f = open('test.obj', 'wb')
obj = {1 : 'python', 2 : 'study', 3 : 'basic'}
# dumpe라는 메소드로 obj를 쓰고 파일을 연결할, f를 써준다.
pickle.dump(obj,f)
# 열었으면 닫아주어야 한다. 에러가 발생하기에
f.close() 

생성된 파일을 열어보면, 바이너리로 작성되어 있기 때문에 해석이 불가능합니다.
pickle로 작성된것은 읽을때도 파이썬으로 읽어오면 우리가 쓴 Dictionary타입을 읽을 수 있습니다. 우리가 쓴 파일을 읽어봅시다.!!

load,close (읽기) 📕

  • 파이썬의 모든 자료형은 다 class 형태로 이루어져 있다. 객체이기에, 객체를 읽었을 때 사용하는 게 바로 pickle
#  test. obj 파일은 실행되는 폴더에 있어야 합니다. 없다면 경로를 지정해 주어야 합니다.
import pickle 
f = open('test.obj', 'rb')
# 쓸때는 dump, 읽을때는 load 사용
data = pickle.load(f)
print(data, type(data))
f.close()
>>> {1: 'python', 2: 'study', 3: 'basic'} <class 'dict'>

os 📕

  • 운영체제에서 사용할 수 있는 기능들 제공
  • 파이썬을 통해 매크로, 업무 자동화를 만들때 유용 ex) 카카오톡 실행, 폴더만들기등
  • mkdir(폴더만들기), rmdir(비어 있으면 삭제),rename(이름 변경)
import os
# 운영체제에 대한 환경 정보가 출력된다.
# 딕셔너리 형태로 되어있다.
print(os.environ)
>>> 'C:\\Users\\yount', 'WINDIR': 'C:\\WINDOWS', 'TERM_PROGRAM': 'vscode', 'TERM_PROGRAM_VERSION': '1.84.2', 'LANG': 'ko_KR.UTF-8', 'COLORTERM': 'truecolor', 'GIT_ASKPASS': 'c:\\Users\\yount\\AppData\\Local\\Programs\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass.sh', 'VSCODE_GIT_ASKPASS_NODE': 'C:\\Users\\yount\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '--ms-enable-electron-run-as-node', 'VSCODE_GIT_ASKPASS_MAIN': 'c:\\Users\\yount\\AppData\\Local\\Programs\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass-main.js', 'VSCODE_GIT_IPC_HANDLE': '\\\\.\\pipe\\vscode-git-1d65de8e2d-sock', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONUNBUFFERED': '1', 'PYDEVD_USE_FRAME_EVAL': 'NO'})
print(os.environ['USERNAME'])
>> yount
# 현재경로
# 파이썬이 실행되고있는 경로를 알려준다.
print(os.getcwd()) 
>>> C:\Users\yount\Desktop\Python +

time 📕

  • 시간 관련 처리함수로 중요
  • 데이터를 언제 생성하고 삭제 했는지 중요하다.
import time
print(time.time())
# 시분초 형태로 나오지만 보기 불편하다.
>>> 1700719401.166616
# 형태 변환
print(time.localtime(time.time()))
>>> time.struct_time(tm_year=2023, tm_mon=11, tm_mday=23, tm_hour=15, tm_min=4, tm_sec=34, tm_wday=3, tm_yday=327, tm_isdst=0)
print(time.ctime())
# 보다 편하게 날짜와 시간이 정확히 표기된다.
Thu Nov 23 15:13:29 2023
# 형식표현은 자주 사용됩니다.
# strftime함수로 시간을 원하는 형식으로 출력 가능
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
>>> 2023-11-23 15:15:21

시간 간격 발생

  • sleep안에는 초를 넣는다. 1을 넣으면 1초마다 for문을 한번씩 실행한다는 뜻
  • 0 부터 5까지 1초 간격으로 출력됩니다.
  • 코드들이 여유롭게 실행되도록 기다려주는 역할을 한다.
  • 사용되는 경우는 많지는 않습니다.
for i in range(5):
	print(i)
	time.sleep(1) 
>>>> 
0
1
2
3
4

random 📕

  • 난수 리턴
# 외부함수이기 때문에 import로 가져와야한다.
# 0 ~ 1 실수를 무작위로 가져온다.
import random 
print(random.random())
>>> 0.32710059363218513
# 1 ~ 45사이의 int값을 랜덤으로 갖고온다.
print(random.randint(1, 45)) 
>>> 5
# 1 ~ 44
print(random.randrange(1, 45))
>>> 25

섞기

  • 주어진 시퀀스를 무작위로 섞어준다.
  • 표본을 뽑을때 사용하기도 한다.
  • 연속가능한 자료형에서 사용가능
d = [1,2,3,4,5]
random.shuffle(d) 
print(d)
>>> [3, 1, 2, 5, 4]

무작위 선택

  • 리스트에서 임의의 숫자가 랜덤으로 선택된다.
d = [1,2,3,4,5]
c = random.choice(d)
print(c)
>>> 2

webbrowser 📕

  • 본인 os의 웹브라우저 실행
import webbrowser
# open 함수 이용
webbrowser.open('http://google.com')
>>> 구글 웹페이지가 실행됩니다.
webbrowser.open_new('http://google.com')
>>> 새로운 탭으로 구글 웹페이지가 실행됩니다.

외장함수에서 중요한 부분은 pickle, os, time입니다.
나머지 부분들은 필요할 때마다 찾아서 사용하면 좋습니다. 🙂

출처 : 인프런

profile
ice blue

0개의 댓글