이미지 출처: https://wikidocs.net/192339
오늘은 저번시간에 이어서 외장함수를 알아보겠습니다.
외장 함수 기본 실습
파일들을 외부에서 실행할때 어떤함수에서 우리가 인자로 넘기듯이, 실행할 때 어떤 값들을 파이썬에 전달해서 그값이 1일경우에는 1번모드로 실행, 2일 경우에는 2번모드로 실행, 이런식으로 어떤 argument를 받을수 있다.
import sys print(sys.argv) # 실행하니까 현재 실행되는 파일이 리스트형식으로 첫 번째로 온다. # 두 번째 콤마를 찍고부터는 실행할 때 전달한 어떤 값들을 받을 수 있다. # 초보분들은 이런 속성값이 있다고만 알고 있어도 됩니다. >> ['C:\\Users\\yount\\Desktop\\Python +\\velog연습.py']
프로그램을 강제종료하는 매우 위험한 함수이다.
이 구문을 만나면 프로그램이 종료되기 때문에 위험합니다.😮
import sys sys.exit()
모든 패키지들의 위치를 알려준다
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']
자세한건 나중에 파일을 읽고 쓰는 방법을 배울때 알아보겠습니다.
import 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타입을 읽을 수 있습니다. 우리가 쓴 파일을 읽어봅시다.!!
# 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'>
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 +
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
시간 간격 발생
for i in range(5): print(i) time.sleep(1) >>>> 0 1 2 3 4
# 외부함수이기 때문에 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
import webbrowser # open 함수 이용 webbrowser.open('http://google.com') >>> 구글 웹페이지가 실행됩니다. webbrowser.open_new('http://google.com') >>> 새로운 탭으로 구글 웹페이지가 실행됩니다.
외장함수에서 중요한 부분은 pickle, os, time입니다.
나머지 부분들은 필요할 때마다 찾아서 사용하면 좋습니다. 🙂