본문 바로가기

인터페이스 개발115

Python - 고급 문법[데코레이터] - 일급 시민, 지역 함수, 함수 데코레이터, 클래스 데코레이터 Chap.17 고급 문법[데코레이터] - 일급 시민, 지역 함수, 함수 데코레이터, 클래스 데코레이터 데코레이터 일급 시민, 지역 함수, 함수 데코레이터, 클래스 데코레이터 일급 시민 함수도 일반 변수와 동일한 특성을 가짐 ① 이름을 가진다. ② 다른 변수에 대입할 수 있다 . ③ 인수로 전달할 수 있다 . ④ 리턴값이 될 수 있다 . ⑤ 컬렉션에 저장할 수 있다 . --> 위와 같은 특성을 가지는 것을 일급시민이라고 함 Python은 지원한다. (Java는 함수가 없어서 지원X) funcvalue def add(a, b): print(a + b) plus = add # 변수에 저장할 수 있다. plus(1, 2) 결과 3 funcpara def calc(op, a, b): # 함수의 인자로 전달할 수 .. 2020. 7. 28.
Python - 고급 문법[반복자] - 열거 가능 객체, 제너레이터 Chap.17 고급 문법[반복자] - 열거 가능 객체, 제너레이터 반복자 열거 가능 객체, 제너레이터 열거 가능 객체 for 반복문의 순회 대상 객체 해당 객체의 __iter__() 메서드로 열거 가능 객체 획득 - 열거 가능 개체는 __iter__() 메서드를 정의해야 함 매 루프마다 __next()__ 함수를 통해 다음 요소를 추출 더 이상 요소가 없는 데 __next()__를 호출하는 경우 - StopIteration 예외가 발생하고 for 반복문을 끝냄 foriter (for문 내부적 구현) nums = [11, 22, 33] it = iter(nums) while True: try: num = next(it) except StopIteration: break print(num) 결과 11 22 .. 2020. 7. 28.
Python - 가상환경[가상환경] - 모듈, 목록, 만들기, 활성화, 비활성화, 삭제 Chap.16-2 가상환경[가상환경] - 모듈, 목록, 만들기, 활성화, 비활성화, 삭제 가상환경 모듈, 목록, 만들기, 활성화, 비활성화, 삭제 가상환경(Virtual Environment) 파이썬에서는 한 라이브러리에 대해 하나의 버전만 설치가 가능 여러개의 프로젝트를 진행하는 경우 - 프로젝트마다 동일 패키지에 대해 다른 라이브러리를 사용하는 경우 문제 이를 방지하기 위한 격리된 독립적인 가상환경을 제공 일반적으로 프로젝트마다 다른 하나의 가상환경을 생성한 후 작업을 시작 pip는 버젼을 설정하지 않으면 가장 최신 버전을 설치한다. 가상환경을 만드는 대표적인 모듈 venv : Python 3.3 버전 이후 부터 기본모듈에 포함됨 virtualenv : Python 2 버전부터 사용해오던 가상환경 라.. 2020. 7. 28.
Python - Pillow 이미지 처리[PIP] - PIP, 이미지 읽기/저장/화면 출력, 색상 변경, 썸네일 만들기, 이미지 부분 잘라내기, center_crop, 이미지 회전 및 Resize, 이미지 필터링, 이미지 ↔ numpy 배열 Chap.16-1 Pillow 이미지 처리[PIP] - PIP, 이미지 읽기/저장/화면 출력, 색상 변경, 썸네일 만들기, 이미지 부분 잘라내기, center_crop, 이미지 회전 및 Resize, 이미지 필터링, 이미지 ↔ numpy 배열 PIP PIP, 이미지 읽기/저장/화면 출력, 색상 변경, 썸네일 만들기, 이미지 부분 잘라내기, center_crop, 이미지 회전 및 Resize, 이미지 필터링, 이미지 ↔ numpy 배열 PIP 파이썬 이미지 처리 라이브러리 pip install pillow - 아나콘다에 기본 탑재되어 있음 기본 사용방법 >> pip install pillow # 터미널 프로젝트 폴더에 이미지파일 python.png 다운로드한 상태 이미지 읽기/저장/화면 출력 .open, .. 2020. 7. 28.
Python - 모듈과 패키지[패키지, 써드 파티 모듈] - 패키지, __init__.py, 모듈의 내부, dir() 함수, help() 함수, 외부 모듈 관리 pip Chap.16 모듈과 패키지[패키지, 써드 파티 모듈] - 패키지, __init__.py, 모듈의 내부, dir() 함수, help() 함수, 외부 모듈 관리 pip 패키지 패키지, __init__.py 패키지 모듈들을 모아 놓은 디렉토리 반드시 __init__.py가 존재해야 함 # 패키지용 디렉토리임을 알림 - 일반적으로 내용은 없음 __init__.py from 패키지 import * - *에 의해 임포트될 모듈 목록을 __all__ 리스트로 지정 - 지정하지 않으면 모든 모듈이 임포트됨 ex) from mypack.calc import * add.outadd(1,2) multi.outmulti(1,2) 기능은 있지만 잘 사용하지 않음 __all__ = ["add", "multi"] print("a.. 2020. 7. 28.
Python - 모듈과 패키지[예제] - 주소록+메모장(2) Chap.16 모듈과 패키지[예제] - 주소록+메모장(2) 모듈과 패키지[예제] 주소록+메모장(2) 주소록+메모장(2) myapp.py와 util.py \PYTHON_LIB 로 이동 내PC -> 속성 -> 고급 시스템 설정 -> 환경변수 -> 시스템 변수 -> 새로 만들기 변수이름 PYTHONPATH 변수값 C:\PYTHON_LIB \PYTHON_LIB\util.py # util.py INCH = 2.54 def calcsum(n): sum = 0 for num in range(n+1): sum += num return sum if __name__ == "__main__" : # 단독 실행되었다면 True print("1inch = ", INCH) print("~10 = ", calcsum(10)) \P.. 2020. 7. 28.
Python - 모듈과 패키지[모듈] - 모듈, 모듈의 정의, 모듈의 사용, 모듈 테스트, 모듈 경로 Chap.16 모듈과 패키지[모듈] - 모듈, 모듈의 정의, 모듈의 사용, 모듈 테스트, 모듈 경로 모듈 모듈, 모듈의 정의, 모듈의 사용, 모듈 테스트, 모듈 경로 모듈 변수와 함수를 모두 한 파일에 정의하면 관리가 힘들어짐 비슷한 성격의 변수 , 함수들을 파일 별로 나눠 정의 이렇게 정의한 파일을 모듈이라고 함 파일명이 모듈명이 됨 모듈의 정의 (util.py) INCH = 2.54 def calcsum(n): sum = 0 for num in range(n+1): sum += num return sum Working Directory에 util.py 파일 생성 모듈의 사용 import util print("1inch = ", util.INCH) print("~10 = ", util.calcsum(1.. 2020. 7. 28.
Python - 클래스[여러가지 메서드] - 클래스 메서드, 클래스 멤버 변수, 정적 메서드, 연산자 메서드 Chap.15 클래스[여러가지 메서드] - 클래스 메서드, 클래스 멤버 변수, 정적 메서드, 연산자 메서드 여러가지 메서드 클래스 메서드, 클래스 멤버 변수, 정적 메서드, 연산자 메서드 클래스 메서드, 클래스 멤버 변수 ■ 클래스 메서드 일반적인 메서드는 인스턴스 메서드 - 반드시 인스턴스를 만든 후 사용 가능 - 첫 번째 인자는 항상 인스턴스에 대한 참조 (self) 클래스 메서드는 인스턴스와 무관하게 존재 - 인스턴스 없이도 클래스명을 통해 접근 가능 - 첫 번째 인자는 클래스에 대한 참조 (cls) @classmethod로 정의 ■ 클래스 멤버 변수 class 안에서 self와 무관하게 정의되는 멤버 변수 인스턴스와 무관하게 존재하며 모든 인스턴스가 공유하는 정보 코드를 보는게 낫다. class .. 2020. 7. 27.
Python - 클래스[클래스] - 액세스 Chap.15 클래스[클래스] - 액세스 클래스 액세스 액세스(1) 파이썬은 기본적으로 정보 은폐 기능 지원하지 않음 getter/setter로 정보(프로퍼티)를 보호 (데코레이터) - @property – 함수명이 프로퍼티명이 되며 getter 함수로 동작 - @프로퍼티명.setter – 프로퍼티의 setter() 함수 정의 class Date: def __init__(self, month): self.inner_month = month # 외부에서 접근할때 month라는 이름으로 읽거나 쓰겠다. @property # 읽는 용도 def month(self): return self.inner_month @month.setter # 설정 용도 def month(self, month): # 잘못된 설정을 방.. 2020. 7. 27.
Python - 클래스[예제] - 주소록 + 메모장 Chap.15 클래스[예제] - 주소록 + 메모장 클래스[예제] 주소록 + 메모장 주소록 + 메모장 이전 두 예제(주소록, 메모장) 상속 이용 import sys class Application: # 부모클라스에 공통적인 작업을 정의 def __init__(self): self.menu = Menu() # 공통 def run(self): # 공통 while True: self.menu.print() sel = int(input("선택] ")) self.menu.run(sel) class NotepadApp(Application): def __init__(self): super().__init__() self.menu.add(MenuItem("열기", self.open)) self.menu.add(Menu.. 2020. 7. 27.
Python - 클래스[클래스] - 상속 Chap.15 클래스[클래스] - 상속 클래스 상속 상속 기존 클래스 정의를 그대로 자신의 것으로 취하는 방법 class 자식클래스명(부모클래스명): ... # 자식 클래스 정의 기능의 확장 UML : 코드를 그림으로 표현 class Human: def __init__(self, name, age): self.name = name self.age = age def intro(self): print(str(self.age) + "살 " + self.name + "입니다.") class Student(Human): def __init__(self, name, age, stunum): # 자신한테 필요한 요소 다 받는다 super().__init__(name, age) # super() 부모class의 참조값.. 2020. 7. 27.
Python - 클래스[예제] - 메모장 Chap.15 클래스[예제] - 메모장 클래스[예제] 메모장 메모장 MENU 1차, add 및 print Test class MenuItem: def __init__(self, title, action = None): # 디폴트 설정(title은 문자열, action은 함수) self.title = title self.action = action def __str__(self): return f"" def __repr__(self): return f"" def run(self): self.action() # action을 함수로 받아 함수 호출 class Menu: def __init__(self): self.menus = [] def add(self, menu_item): self.menus.appen.. 2020. 7. 27.