목록Coding/Python (22)
exestudiary
제너레이터는 딥러닝에서 학습용 데이터의 Batch를 만들 때 많이 사용된다. 제너레이터를 이해하기 위해서는 다음과 같은 함수를 먼저 소개한다. 시작할 때 print를 이용하여 메시지를 출력하고, 0부터 4까지 각 값의 제곱을 val이라는 리스트에 추가하여 반환해주는 함수이다. def method(): print("Start method()") val = [] for x in range(0, 5): val.append( x**2 ) return val 그러나 Return 키워드를 사용한 코드에는 성능 문제가 있다. 만약에 range(0, 10000) 같이 범위가 매우 커지면, 메모리 공간도 부족하고 성능도 저하된다. out = method()for i in range(0,..
함수를 둘러싼 환경을 유지하고 다시 꺼내서 사용하는 함수 def calc(): a = 3 b = 5 def mul_add(x): return a * x + b print(f"{locals()['a'], locals()['b'] = }") return(mul_add) c = calc() print(c(1), c(2), c(3), c(4), c(5)) def calc(): a = 3 b = 5 return lambda x: a * x + b c = calc() print(c(1), c(2), c(3)) def calc(): a = 3 b = 5 total = 0 def mul_add(x): nonlocal total print(total) total = total + a * x + b print(total)..
클래스 속성 사용하기 class Person: backpack = [] def put_backpack(self, item): self.backpack.append(item) james = Person() james.put_backpack('노트북') maria = Person() maria.put_backpack('파이썬') print(james.backpack) # james는 Person 클래스 이기에 출력가능 print(maria.backpack) # maria는 Person 클래스 이기에 출력가능 > Person 클래스에 바로 backpack 속성을 넣고 put_backpack 메서드를 만든다. > 그리고 인스턴스 2개를 만들고 각각 put_backpack 메서드 사용 > 클래스 속성은 클래스에 ..
인스턴스 변수 > 일반적으로 인스턴스 변수는 생성자 안에 정의를 함. > 예시 class Car: def __init__(self, brand, price): self.brand = brand self.price = price def get_brand(self): return self.brand def get_price(self): return self.price new_car = Car("KIA", 50_000_000) old_car = Car("BMW", 30_000_000) print(f"My old car was {old_car.get_brand()} and the price was {old_car.get_price():,} won.") print(f"My new car was {new_car.g..
생성자 > 인스턴스를 생성하면 최초에 호출되는 메서드 > 생성과 초기화를 동시에 할 수 있는 함수 기본생성자 > 매개변수 self만 있는 기본 생성자 매개변수가 있는 생성자 > 인스턴스 생성 시 초기값을 매개변수로 넘겨줌.
OOP(Object-Oriented Programming - 실행 순서가 아닌 단위 객체를 중심으로 프로그램을 작성.) - 객체: 실생활에서의 모든 자료 (물건) - 모든 객체는 속성과 행동을 가진다. > 객체 지향 프로그래밍은 이러한 객체 개념을 프로그램으로 표현함. 예) 속성 > 변수, 행동 > 함수로 표현 클래스 > 하나의 새로운 데이터 타입을 만드는 것 > 클래스를 사용하는 목적이 변수와 함수를 묶어서 하나의 새로운 객체(타입)로 만드는 것 > 실제 세계에 존재하는 실체(instance)를 객체(object)라고 하고, 객체들의 공통점을 간추려서 개념적으로 나타낸 것 > 어떤 클래스를 만들기 위해서는 그 객체가 갖는 성질(상태, 속성, 변수)과 그 객체가 하는 행동(메소드, 함수)을 정의해주면 된..
write( ) 함수 file_hander = open("output.txt", "wt", encoding = "utf-8") while True: words = input("Enter words >>> ") if word.startswith("exit"): break else: file_handler.write(words) file_hander.close() 파일에서 한 칸씩 띄워서 넣고 싶을 때 file_hander = open("output_1.txt", 'wt', encoding = "utf-8") while True: words = input("Enter words >>> ") if words.startswith("exit"): break else: file_handler.write(words)..
data_poem.txt의 파일은 다음과 같이 한글로 저장되어있다. 여기서 파일 오픈 에러가 나는지 확인을 하기 위해 다음과 같은 코드를 실행한다. try: file_handler = open("data_poem.txt", 'rt') data_string = file_handler.read() print(data_string) file_handler.close() except FileNotFoundError as e: print(f"파일 오픈 에러 :{e}") except UnicodeDecodeError as e: print(f"파일 오픈 에러 :{e}") 이 결과는 cp949로 윈도우에서 지원하는 encoding 체계라서 바꿔주려면 encoding 파라미터를 전달하여 파일이 오픈되도록 해야한다. fi..
file open 시 오류 처리 존재하지 않는 파일을 읽고자 한다면 에러가 발생한다. 이럴 때는 open으로 파일을 불러올 때 os모듈을 사용하여 파일 존재 여부를 확인하면 된다. import os file_name = "data_science.txt" if os.path.exists(file_name): file_handler = open("data_science.txt", "rt") data_string = file_handler.read() print(data_string) file_handler.close() else: print(f"파일 오픈 에러 : {file_name} 파일이 존재하지 않습니다.") 또는 try, except 구문을 사용해 오류를 처리해주면 된다. try: file_handl..
1. 파일 열기 open("파일명","r",encoding = 'utf-8') open("파일명","w") open("sample.txt", "rt") # 파일없으면 error남. open("sample.txt", "wt") # 파일없어도 error X. # 뒤에 t는 text로 읽고 쓰겠다는 뜻 주피터랩 코드설명: shift + tab 파일 열기 모드 (open("파일명", 모드, encoding, .....) 여기서 mode에 들어가는 것들을 말함.) - 생략 : r과 동일 - r : 읽기 모드, 기본값 - w: 쓰기 모드, 기존에 파일이 있으면 덮어씀. - r+ : 읽기/ 쓰기 겸용 모드 - a : 쓰기 모드. 기존에 파일이 있으면 이어서 씀. append의 약자 - t : 텍스트 모드. 텍스트 파..
