Python
-
제너레이터(발생자)Python 2023. 10. 24. 15:39
제너레이터는 이터레이터를 만들어 주는 함수 이터레이터는 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 하지만 제너레이터는 함수 안에서 yield 키워드만 사용하면 끝 > 이터레이터보다 훨씬 간단하게 작성 가능 # yield 값 def number_generator(): yield 0 yield 1 yield 2 for i in number_generator(): print(i) # 실행 결과 0 1 2 제너레이터 객체가 이터레이터인지 확인 g = number_generator() print(g) print(dir(g)) # 실행 결과 ['__class__', '__del__', '__delattr__', '__dir__', '__doc__', '__eq__', '__for..
-
이터레이터(반복자)Python 2023. 10. 24. 12:16
이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식 사용 > 데이터 생성을 뒤로 미루는 것(지연 평가) 반복 가능한 객체 알아보기 > 문자열, 리스트, 딕셔너리, 세트 객체에 __iter__ 메서드가 들어 있는지 확인, dir 함수로 확인 가능 >>> dir( [1, 2, 3] ) ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__g..
-
예외 처리Python 2023. 10. 23. 16:43
try except로 사용 # try: # 실행할 코드 # except: # 예외가 발생했을 때 처리하는 코드 try: x = int(input('나눌 숫자 입력: ')) y = 10 / x print(y) except: # 예외가 발생했을 때 실행됨 print('오류 발생') # 실행 결과 나눌 숫자 입력: 0 오류 발생 예외 발생 시 해당 줄에서 바로 코드 실행 중단, 바로 except로 넘어가 코드 실행 try의 y = 10 / x, print(y) 모두 실행되지 x try 코드에서 에러가 발생했을 때만 except 코드가 실행됨 특정 예외만 처리 # try: # 실행할 코드 # except 예외이름: # 예외가 발생했을 때 처리하는 코드 y = [10, 20, 30] try: index, x = ..
-
클래스(3)Python 2023. 10. 23. 12:38
클래스의 상속 사용 사람 클래스로 학생 클래스 만들기 # class 기반클래스이름: # 코드 # class 파생클래스이름(기반클래스이름): # 코드 class Person: def greeting(self): print('안녕하세요') class Student(Person): def study(self): print('공부하기') james = Student() james.greeting() # 안녕하세요: 기반 클래스 Person의 메서드 호출 james.study() # 공부하기: 파생 클래스 Student에 추가한 study 메서드 maria = Person() maria.greeting() maria.study() # 에러, Person에는 study 메서드가 없음 maria.study() ^^^..
-
클래스(2)Python 2023. 10. 18. 16:03
클래스와 인스턴스 속성 알아보기 클래스 속성 사용하기 class Person: bag = [] # 객체 관계없이 공통 사용 def put_bag(self, stuff): self.bag.append(stuff) james = Person() # james 객체 생성 james.put_bag('책') maria = Person() # maria 객체 생성 maria.put_bag('열쇠') print(james.bag) print(maria.bag) # 실행 결과 ['책', '열쇠'] ['책', '열쇠'] 클래스 속성은 클래스에 속해 있으며, 모든 인스턴스에서 공유 put_bag 메서드에서 클래스 속성 bag에 접근할 때 self를 사용했고, self는 현재 인스턴스를 뜻하므로 클래스 속성을 지칭하기에 모..
-
클래스(1)Python 2023. 10. 18. 14:51
class 클래스는 객체의 구조와 행동을 정의, 복잡한 문제를 다루기 쉽도록 만듦 객체의 클래스는 초기화를 통해 제어 클래스와 메서드 만들기 class에 이름 지정하고 :(콜론) 붙인 뒤 다음 줄부터 def로 메서드 작성 > 반드시 들여쓰기 보통 파이썬에서 클래스 이름은 대문자로 시작 메서드의 첫 번째 매개변수는 반드시 self를 지정해야 함 >>> class Person: ... def greeting(self): ... print('hello') ... >>> james = Person() # Person 클래스로 james 인스턴스 만들기 메서드 호출 >>> james.greeting() # 인스턴스를 통해 클래스의 메서드에 접근 hello ↑ 인스턴스 메서드 파이썬에서 흔히 볼 수 있는 클래스 >..
-
클로저Python 2023. 10. 17. 16:22
변수의 사용 범위 알아보기 x = 10 # 전역 변수 def foo(): print(x) # 전역 변수 출력 foo() # 함수 호출 10 print(x) # 전역 변수 출력 10 foo 함수에서 함수 바깥에 있는 변수 x의 값 출력, 함수 바깥에서도 x의 값 출력 가능 함수를 포함해 스크립트 전체에서 접근할 수 있는 변수를 전역 변수라 하고, 전역 변수에 접근할 수 있는 범위를 전역 범위라고 함 함수 안에서 전역 변수 변경 def foo(): x = 10 # 지역 변수 print(x) # 지역 변수 출력 foo() # 함수 호출 print(x) # 에러, foo의 지역 변수는 출력할 수 없음 Traceback (most recent call last): File "", line 1, in NameErr..
-
람다Python 2023. 10. 17. 15:02
람다 표현식으로 함수 만들기 >>> # 함수식 >>> def plus_ten(x): ... return x + 10 ... >>> plus_ten(1) 11 >>> >>> # 람다 표현식 >>> lambda x: x + 10 >>> # 이 상태로는 함수 호출 x, 이름이 없는 함수를 만들기 때문에 익명 함수라고 부름 >>> print( lambda x: x + 10 ) >>> >>> list( lambda x: x + 10 ) Traceback (most recent call last): File "", line 1, in TypeError: 'function' object is not iterable >>> >>> plus_ten = lambda x: x + 10 # 람다로 만든 익명 함수 호출하려면 ..