2024년 2월 24일
def func(x:int) -> list: y1=x*100 y2=x*200 y3=x*300 return [y1,y2,y3] print(func(0.52)) ''' 람다 (lambda)함수 : 메모리절약, 가독성향상, 코드간결 -일반함수 객체 생성 -> 메모리 할당 -람다함수 즉시 실행(Heap 초기화)-> 메모리 초기화 ''' #일반함수 def mul_10(num:int) -> int: return num*10 var = mul_10 print(var) mul_10(10) print(type(var)) #람다함수 #함수명=lambda 매개변수 : 실행식 l_mul_10 = lambda num : num*10 print(l_mul_10(10)) def func_final(x,y,func): print(x*y*func(10)) func_final(10,10,lambda x:x*10) #filter(함수, 리스트) li = [1,-5,0,4,-2,3] def over(x): if x>=0: return x print(list(filter(over, li))) print(list(filter(lambda x:x>=0, li))) # 클래스 ''' 클래스 : 변수 + 함수 class ____: 실행할 코드 ''' class UserInfo: #변수(속성)+함수(메서드) name = "홍길동" #객체생성(인스턴스) user1=UserInfo() user1.name="김예지" print(user1.name) user2=UserInfo() user2.name="박민서" print(user2.name) print(user1.name==user2.name) #데이터만 비교 print(user1.name is user2.name) print(id(user1.name)) print(id(user2.name)) print(user1.name is user2.name) class UserInfo: name="" #메서드 #special method : 파이썬에서 특별한 기능을 하도록 약속한 메서드 def __init__(self,n): #생성자 : 객체를 생성할 때 호출되는 메서드 (변수를 초기화) self.name = n def __del__(self): #소멸자:객체를 삭제할 때 호출되는 메서드 print("나는 폐차~~~") user1 = UserInfo("김예지") print(user1.name) user2 = UserInfo("홍길동") print(user2.name) user1.name = "엄가원" user3 = UserInfo("임태희") del(user1) # 클래스 변수 : 직접 사용 가능, 객체 보다 먼저 생성 # 인스턴스 변수 : 객체마다 별도로 존재 class UserInfo(): name = "" def __init__(self,name): self.name=name def print_info(self): print("소유자는 ", self.name, "입니다.") #네임스페이스 : 객체를 인스턴스화(객체생성) 할 때 저장된 공간 user1 = UserInfo("신유민") user2 = UserInfo("이혜성") print(id(user1)) print(id(user2)) print(user1.name) print(user2.name) #self의 이해 class SelfTest(): def function1(): #클래스 메서드 print("Invoked function1") def function2(self): #인스턴스 메서드 print(id(self)) print("Invoked function2") ''' st = SelfTest() #객체 생성=인스턴스 #st.function1() SelfTest.function1() st.function2() SelfTest.function2(st) print(">>>>",id(st)) ''' SelfTest.function1() #클래스 변수, 인스턴스 변수 class WereHouse: #속성(변수) stock_num = 0 name="" #메서드(함수) def __init__(self,name): #객체를 생성할 때 사용 가능하다 self.name = name WereHouse.stock_num +=1 def __del__(self): WereHouse.stock_num -=1 user1 = WereHouse("kim") user2 = WereHouse("lee") user3 = WereHouse("park") print(user1.stock_num) print(user2.stock_num) print(user3.stock_num) print(user1.name) print(user2.name) print(user3.name) del(user3) print(WereHouse.stock_num) ''' 클래스 변수, 메서드 : 클래스명._____ 인스턴스 변수, 메서드 : 객체명._____ ''' #클래스 상속 #상속 이유 : 코드 재사용(중복 코드 최소화), 코드의 생산성, 유지보수 등이 용이 #상속 기본 #부모클래스(슈퍼클래스) -> 자식클래스(서브클래스) : 부모의 모든 속성, 메서드 사용 가능 #라면 -> 속성(회사, 맛, 면 종류, 이름) : 부모 class Ramen: brand = "" taste = "" type = "" name = "" def __init__(self, brand, taste, type,name): self.brand=brand self.taste=taste self.type=type self.name=name def print_ramen(self): print("나는 ",self.name) class Shin(Ramen): #부모:Ramen, 자식:Shin pass class Sesame(Ramen): #부모:Ramen, 자식:Sesame pass Ramen1 = Shin("농심","매워","꼬들","신라면") Ramen2 = Sesame("오뚜기","고소","꼬들","참깨라면") # 클래스 변수 : 직접 사용 가능, 객체 보다 먼저 생성 # 인스턴스 변수 : 객체마다 별도로 존재 class UserInfo(): name = "" def __init__(self,name): self.name=name def print_info(self): print("소유자는 ", self.name, "입니다.") #네임스페이스 : 객체를 인스턴스화(객체생성) 할 때 저장된 공간 user1 = UserInfo("신유민") user2 = UserInfo("이혜성") print(id(user1)) print(id(user2)) print(user1.name) print(user2.name) #self의 이해 class SelfTest(): def function1(): #클래스 메서드 print("Invoked function1") def function2(self): #인스턴스 메서드 print(id(self)) print("Invoked function2") ''' st = SelfTest() #객체 생성=인스턴스 #st.function1() SelfTest.function1() st.function2() SelfTest.function2(st) print(">>>>",id(st)) ''' SelfTest.function1() #클래스 변수, 인스턴스 변수 class WereHouse: #속성(변수) stock_num = 0 name="" #메서드(함수) def __init__(self,name): #객체를 생성할 때 사용 가능하다 self.name = name WereHouse.stock_num +=1 def __del__(self): WereHouse.stock_num -=1 user1 = WereHouse("kim") user2 = WereHouse("lee") user3 = WereHouse("park") print(user1.stock_num) print(user2.stock_num) print(user3.stock_num) print(user1.name) print(user2.name) print(user3.name) del(user3) print(WereHouse.stock_num) ''' 클래스 변수, 메서드 : 클래스명._____ 인스턴스 변수, 메서드 : 객체명._____ ''' class Car: '''Parent Class''' def __init__(self,tp,color): self.type=tp self.color=color def show(self): return "Car Class 'Show Method!'" class BmwCar(Car): '''Child Class''' def __init__(self, car_name, tp, color): super().__init__(tp, color) self.car_name = car_name def show_model(self) -> None: return "your car name : %s" %self.car_name class KiaCar(Car): '''Child Class''' def __init__(self, car_name, tp, color): super().__init__(tp, color) self.car_name = car_name def show_model(self) -> None: return "your car name : %s" %self.car_name def show(self): print(super().show()) return "Car Info: %s %s %s" %(self.car_name, self.type, self.color) model1 = BmwCar('bmw x7','suv','white') print(model1.color) #parent print(model1.type) #parent print(model1.car_name) #child model1.show() model1.show_model() print(model1.__dict__) #오버라이딩(overriding) : ~ 보다 우선시되다. model2 = KiaCar('k9','sedan','black') model2.show() print(model2.show()) #parent method call(invoke) model3 = KiaCar('sportage','suv','silver') print(model3.show()) #상속 정보 함수 print(BmwCar.mro()) #다중 상속 class X: pass class Y: pass class Z: pass class A(X,Y): pass class B(Y,Z): pass class M(B,A,Z): pass print(M.mro()) # 파이썬 데이터베이스 연동 # 테이블 생성 및 삽입 import sqlite3 import datetime print(sqlite3.version) # 현재 날짜 생성 currTime=datetime.datetime.now() print(currTime) # 2024-02-24 17:19:43 now = currTime.strftime('%Y-%m-%d %H:%M:%S') print("now:",now) #DB생성 & Auto Commit #commit(): 저장 conn = sqlite3.connect('C:/pypro/10.Exam/resources/database.db', isolation_level=None) #Cursor(): 파일에 필요한 부분만 가져오는 거 c= conn.cursor() print('cursor type:', type(c)) #테이블 생성 c.execute("CREATE TABLE IF NOT EXISTS USERS(IDX INTEGER PRIMARY KEY, NAME TEXT, EMAIL TEXT, PHONE TEXT, BIRTH TEXT, REGDATE TEXT)") #c.execute("INSERT INTO USERS VALUES(3,'홍길동','hong1202@gmail.com','010-0000-1111','0000-12-02',?)",(now,)) userList = ( (4,'Lee','Lee@naver.com','010-2222-2222','1992-03-06', now) ,(5,'Kim','Kim@naver.com','010-2222-3333','1992-03-06', now) ,(6,'Park','Park@naver.com','010-2222-4444','1992-03-06', now) ) c.executemany("INSERT INTO USERS (IDX, NAME, EMAIL, PHONE, BIRTH, REGDATE) VALUES(?,?,?,?,?,?)", userList)