본문 바로가기

Python61

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 클래스[예제] - 주소록 + 메모장 클래스[예제] 주소록 + 메모장 주소록 + 메모장 이전 두 예제(주소록, 메모장) 상속 이용 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.
Python - 클래스[예제] - 주소록 Chap.15 클래스[예제] - 주소록 클래스[예제] 주소록 주소록 주소록 -> 리스트에 인스턴스를 넣기 import pickle # 저장,불러오기 용 class UserInfo: def __init__(self, name, email, phone): self.name = name self.email = email self.phone = phone def __str__(self): # 해당 인스턴스를 print 할 때 (자세하게 해도 좋음) return f"" def __repr__(self): # 컬렉션에 포함되었을 때 print (축약) return f"" class AddressBook: # 정보 관리 class는 CRUD를 기억하자. def __init__(self): self.book = [] .. 2020. 7. 27.
Python - 클래스[클래스] - 클래스, 클래스 정의, 생성자 Chap.15 클래스[클래스] - 클래스, 클래스 정의, 생성자 클래스 클래스, 클래스 정의, 생성자, 상속, 액세스 가장 중요한 파트, 객체 지향 프로그래밍 클래스 관련 정보와 정보의 조작 함수(메서드)를 묶어서 관리 기존 예제 (두 함수가 독립적) balance = 8000 def deposit(money): global balance balance += money def inquire(): print("잔액은 %d원 입니다."%balance) deposit(1000) inquire() 결과 잔액은 9000원 입니다. 정보가 많아지면 불편하다. (누구, 언제, 이자율, ...) 클래스 정의 class 키워드로 정의 (관례 파스칼) - 사용하기 위해서는 인스턴스를 생성한 후 사용 class Accoun.. 2020. 7. 27.
Python - 파일[파일 관리] - 파일 관리 함수, 디렉토리 관리함수 Chap.14 파일[파일 관리] - 파일 관리 함수, 디렉토리 관리함수 파일 관리 파일 관리 함수, 디렉토리 관리함수 파일 관리 함수 shutil.copy(a, b) shutil.move(a, b) shutil.rmtree(path) # 비어있는 directory만 삭제 가능 os.rename(a, b) os.remove(f) 리눅스 용 os.chmod(f, m) shutil.chown(f, u, g) os.link(a, b) os.symlink(a, b) import shutil shutil.copy("live.txt", "live2.txt") 디렉토리 관리 함수 os.chdir(d) # change os.mkdir(d) # make ☆ (이미 존재하면 예외) os.rmdir(d) # remove os.. 2020. 7. 27.
Python - 파일[파일 입출력] - 파일 쓰기, 파일 읽기, 입출력 위치, 내용 추가, 파일 예외 처리, with ~ as 문, pickle 모듈 Chap.14 파일[파일 입출력] - 파일 쓰기, 파일 읽기, 입출력 위치, 내용 추가, 파일 예외 처리, with ~ as 문, pickle 모듈 파일 입출력 파일 쓰기, 파일 읽기, 입출력 위치, 내용 추가, 파일 예외 처리, with ~ as 문, pickle 모듈 파일 쓰기 open(파일경로, 모드) 모드 - r : 읽기, 파일이 없는 경우 예외 발생 - w : 쓰기, 파일이 없으면 새로 생김 - a : 추가 - x : 쓰기용으로 여나 기존 파일이 있는 경우 실패 - t : text 모드로 열기 (디폴트) - b : binary 모드로 열기 try에 open, finally에 close 해주자. PyCharm은 UTF-8을 사용한다. windows는 window-949를 사용(이걸로 열면 잘보인다.. 2020. 7. 27.
Python - 표준모듈[예제] - 고스톱 패 섞기 및 패 분배 Chap.12 표준모듈[예제] - 고스톱 패 섞기 및 패 분배 예제 고스톱 패 섞기 및 패 분배 고스톱 패 섞기 및 패 분배 패의 수 : 48 게임 인원수: 3 deck = [] users = [ [], #사용자 1의 패 [], #사용자 2의 패 [] #사용자 3의 패 ] 최종 출력: 각 사용자의 패, 남은패를 출력하세요. 내 풀이 import random def print_result(deck, users): for n in range(len(users)): print(n+1,"번째 사용자 : ", users[n]) print("남은 패(", len(deck), "장)", sep = "") print(sorted(deck)) def assign(deck, users): for n in range(len.. 2020. 7. 27.
Python - 예외 처리[자원의 정리] - finally, assert Chap.13 예외 처리[자원의 정리] - finally, assert 자원의 정리 finally, assert finally 예외 발생 여부와 상관없이 항상 호출 작업의 마무리 작업 (cleanup) 수행 try: print("네트워크 접속") a = 2/0 print("네트워크 통신 수행") finally: print("접속 해제") print("작업 완료") 결과 Traceback (most recent call last): File "C:/workspace/01_python/chapter13/ex13-02.py", line 8, in a = 2/0 ZeroDivisionError: division by zero 네트워크 접속 접속 해제 이용 def comm(): try: print("네트워크 접속.. 2020. 7. 27.