본문 바로가기

Python

(30)
29. 재귀호출(recursive call) 1. 재귀 호출(recursive call) 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘, 고급 정렬 알고리즘 작성시 사용됨 1-1. 재귀 호출 분석 - 팩토리얼 - 2! = 1 * 2 - 3! = 1 * 2 * 3 - 4! = 1 * 2 * 3 * 4 = 4 * 3! 1-2. 규칙 n! = n * (n-1)! 규칙을 함수로 표현해보기 함수(n)은 n>1 이면 return n * 함수(n-1) 함수(n)은 n=1 이면 return n 1-3. 검증 2! 함수(2)이면 2>1 이므로, 2*함수(1) 함수(1)은 1이므로 return 2*1 결과는 2 3! 함수(3)이면 3>1 이므로 3*함수(2) 함수(2는) 1번식에 의해 2! 이므로 return 2*1 3*함수(2)는 3*2 = 3*2*1 결..
28. DB를 이용한 단어장 만들기 # MySQL에서 words 테이블 생성 create table words( eng varchar(100) primary key, kor varchar(100) not null, lev int ); # DTO class Words: def __init__(self, eng, kor, lev=1): self.eng = eng self.kor = kor self.lev = lev def setEng(self, eng): self.eng = eng def getEng(self): return self.eng def setKor(self, kor): self.kor = kor def getKor(self): return self.kor def setLev(self, lev): self.lev = lev def ..
27. 파이썬과 MySQL 연동 1. mysqlclient 파이썬에서는 MySQL 서버와 통신할 수 있는 파이썬용 데이터베이스 커넥터의 종류가 여러가지 있음 PyMySQL, mysqlclient를 가장 많이 사용함 사용법은 비슷하나 속도가 빠른 mysqlclient를 권장하고 있음 !pip install mysqlclient import MySQLdb # host : IP주소, localhost, 127.0.0.1 # user : 유저, root # password : 비밀번호, 1234 # db : 데이터베이스, kdt db = MySQLdb.connect(host = 'localhost', user = 'root', password = '1234', db = 'kdt') # db = MySQLdb.connect('localhost'..
26. DAO, DTO, VO 1. DAO(Data Access Object) DataBase의 data에 접근하기 위한 객체로 직접 DataBase에 접근하여 데이터를 삽입, 조회, 변경, 삭제등을 조작할 수 있는 기능 DataBase 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용 ✔ 비즈니스 로직 업무에 필요한 데이터처리를 수행하는 응용프로그램의 일부 데이터의 입력, 수정, 조회, 삭제 및 처리 등을 수행하는 각종 처리를 의미 유저의 눈에는 보이지 않지만, 유저가 원하는 행위를 잘 전달하기 위해 짜여진 코드 로직 2. DTO(Data Transfer Object) 데이터 전송(이동) 객체라는 의미 로직을 가지지 않는 순수한 데이터 객체이며 getter/setter 메소드만 가진 클래스를 의미 3. VO(Value O..
25. 파일 입출력 라이브러리 1. 파일 읽기 및 저장하기 1-1. fileinput 텍스트 파일을 읽고, 쓰고 저장하는 기능을 편리하게 사용할 수 있도록 해주는 라이브러리 여러개의 파일을 읽어서 수정할 수 있음 import fileinput import os import glob # 현재 경로 확인 os.getcwd() # 'C:\\hhj\\python\\jupyter' # 디렉토리 내 파일 확인 os.listdir(os.getcwd()) # ['.ipynb_checkpoints', '25. 파일 입출력 라이브러리.ipynb'] # 경로 설정 path = 'sample/' # glob() : 해당 경로의 파일 이름을 리스트로 반환 glob.glob(os.path.join(path, '*.txt')) ''' ['sample\\새파일1..
주피터 노트북 설치 1. 파이썬 설치 가장 많이 쓰이는 버전인 3.8.6 버전 설치 https://www.python.org/downloads/release/python-386/ Python Release Python 3.8.6 The official home of the Python Programming Language www.python.org 운영체제에 맞는 버전 찾아서 설치 installer 설치 이후, 실행하면 다음과 같은 화면이 나옴 Add Python 3.8 to PATH 체크 한 뒤, Customize installation 클릭 Next 클릭 Browse를 클릭해 경로 설정 경로 설정을 마치고 Install 설치 완료 cmd 창 들어가서 python 입력 후, 잘 설치되었는지 확인 2. pip install..
24. 변수 타입 어노테이션 1. 변수 타입 어노테이션 1-1. 타입 어노테이션(Type Annotation) 변수나 상수를 선언할 때 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 직접 알려주는 방법 프로그램은 수많은 함수, 클래스 등으로 복잡하게 얽혀있는 경우가 많은데 변수 타입이 맞지 않으면 에러나 버그의 발생 가능성이 매우 높아짐 타입 어노테이션을 사용하면 코드 가독성과 협업 효율성이 매우 높아짐 파이썬 3.5 부터 기능이 지원되어 많은 라이브러리, 프로젝트에서 사용이 확산되는 추세 Java, C, C++ 등은 컴파일 시 변수 타입이 결정되는 정적 프로그래밍 언어이며, 파이썬은 프로그램 실행 도중에 변수 타입을 동적으로 결정하는 동적 프로그래밍 언어임 1-2. 동적 프로그래밍 언어의 장단점 장점 타입이 ..
23. 클로저와 데코레이터 1. 클로저(Closure) 함수 안의 함수를 결과로 반환할 때, 그 내부 함수를 클로저라고 함 콜백함수, 함수의 순차적 실행, 데코레이터 함수에 사용 def mul2(n): return n * 2 mul2(10) # 20 mul2(5) # 10 def mul5(n): return n * 5 mul5(10) # 50 mul5(5) # 25 # mul1, mul2, mul3 ... mul100도 만들어야 하나? # 클래스 이용하기 class Mul: def __init__(self, m): self.m = m def mul(self, n): return self.m * n mul2 = Mul(2) print(mul2.mul(10)) # 20 print(mul2.mul(5)) # 10 mul5 = Mul(5..