본문 바로가기

Python52

그래프 그리기 2026. 1. 30.
모듈/패키지 지금까지 파이썬 코드를 작성하면서 input, print 등의 내장 함수(built-in function)를 주로 사용했는데, 내장 함수만으로는 할 수 있는게 별로 없습니다. 그래서 좀 더 복잡한 프로그램을 만들려면 파이썬의 모듈과 패키지를 사용해야 합니다. 우리가 책 중간 중간에 사용했던 random, turtle, pickle 등이 바로 모듈과 패키지입니다.모듈(module)은 각종 변수, 함수, 클래스를 담고 있는 파일이고, 패키지(package)는 여러 모듈을 묶은 것입니다. 파이썬을 설치할 때 다양한 모듈과 패키지가 기본으로 설치됩니다. 만약 기본 모듈과 패키지로 부족하다면 다른 사람이 만든 유명 모듈과 패키지를 설치해서 쓸 수도 있습니다. 모듈, 패키지, 라이브러리파이썬을 배우다 보면 모듈, .. 2026. 1. 30.
정규표현식 메타 문자설명[]문자, 숫자 범위를 표현하며 +, -, . 등의 기호를 포함할 수 있음{개수}특정 개수의 문자, 숫자를 표현{시작개수, 끝개수}특정 개수 범위의 문자, 숫자를 표현+1개 이상의 문자를 표현. 예) a+b는 ab, aab, aaab는 되지만 b는 안 됨*0개 이상의 문자를 표현. 예) a*b는 b, ab, aab, aaab?0개 또는 1개의 문자를 표현. 예) a?b는 b, ab.문자 1개만 표현^[ ] 앞에 붙이면 특정 문자 범위로 시작하는지 판단 [ ] 안에 넣으면 특정 문자 범위를 제외$특정 문자 범위로 끝나는지 판단|여러 문자열 중 하나라도 포함되는지 판단( )정규표현식을 그룹으로 묶음, 그룹에 이름을 지을 때는 ?P 형식 예) (?P[a-zA-Z_][a-zA-Z0-9_]+)함수 및.. 2026. 1. 30.
데코레이터 1. 데코레이터 사용하기파이썬은 데코레이터(decorator)라는 기능을 제공합니다. 데코레이터는 장식하다, 꾸미다라는 뜻지금까지 클래스에서 메서드를 만들 때 @staticmethod, @classmethod, @abstractmethod 등을 붙였는데,이렇게 @로 시작하는 것들이 데코레이터입니다.즉, 함수(메서드)를 장식한다고 해서 이런 이름이 붙었습니다.데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용합니다.class Calc: @staticmethod # 데코레이터 def add(a, b): print(a + b) 1) 데코레이터 만들기예를 들어서 함수의 시작과 끝을 출력하고 싶다면 다음과 같이 함수 시작, 끝 부분에 print를 넣어주어야 합니다... 2026. 1. 29.
코루틴 1. 코루틴 사용하기def add(a, b): c = a + b # add 함수가 끝나면 변수와 계산식은 사라짐 print(c) print('add 함수') def calc(): add(1, 2) # add 함수가 끝나면 다시 calc 함수로 돌아옴 print('calc 함수') calc() 이 소스 코드에서 calc 함수와 add 함수의 관계를 살펴보겠습니다. calc가 메인 루틴(main routine)이면 add는 calc의 서브 루틴(sub routine)입니다. 이 메인 루틴과 서브 루틴의 동작 과정을 그림으로 나타내면 다음과 같은 모양이 됩니다.메인 루틴에서 서브 루틴을 호출하면 서브 루틴의 코드를 실행한 뒤 다시 메인 루틴으로 돌아옵니다. 특히 서브 루틴.. 2026. 1. 29.
제너레이터 1. 제너레이터 사용하기제너레이터는 이터레이터를 생성해주는 함수입니다.이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 하지만 제너레이터는 함수 안에서 yield라는 키워드만 사용하면 끝입니다.그래서 제너레이터는 이터레이터보다 훨씬 간단하게 작성할 수 있습니다.참고로 제너레이터는 발생자라고 부르기도 합니다. 이 책에서는 제너레이터를 사용하겠습니다. 함수 안에서 yield를 사용하면 함수는 제너레이터가 되며 yield에는 값(변수)을 지정합니다.yield 값(변수)def number_generator(): yield 0 yield 1 yield 2 for i in number_generator(): print(i)012 1) 제너레이터.. 2026. 1. 29.
이터레이터(iterator) 이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)입니다.데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)라고 합니다.참고로 이터레이터는 반복자라고 부르기도 합니다. 이 책에서는 이터레이터를 사용하겠습니다.1. 반복 가능한 객체 (iterable)반복 가능한 객체는 말 그대로 반복할 수 있는 객체인데우리가 흔히 사용하는 문자열, 리스트, 딕셔너리, 세트가 반복 가능한 객체입니다.즉, 요소가 여러 개 들어있고, 한 번에 하나씩 꺼낼 수 있는 객체입니다.객체가 반복 가능한 객체인지 알아보는 방법은 객체에 __iter__ 메서드가 들어있는지 확인해보면 됩니다. dir(객체)>>> dir([1, 2, 3])['__add__', '__class__'.. 2026. 1. 29.
Exception 1. try except로 사용하기예외 처리를 하려면 다음과 같이 try에 실행할 코드를 넣고 except에 예외가 발생했을 때 처리하는 코드를 넣습니다.try: 실행할 코드except: 예외가 발생했을 때 처리하는 코드 2. 특정 예외만 처리하기이번에는 except에 예외 이름을 지정해서 특정 예외가 발생했을 때만 처리 코드를 실행하도록 만들어보겠습니다.try: 실행할 코드except 예외이름: 예외가 발생했을 때 처리하는 코드 try_except_exception.pyy = [10, 20, 30] try: index, x = map(int, input('인덱스와 나눌 숫자를 입력하세요: ').split()) print(y[index] / x)except ZeroDiv.. 2026. 1. 29.
덕타이핑 / 믹스인 덕타이핑덕 타이핑이란 무엇인가요? 덕 타이핑은 실제 타입(클래스)은 상관하지 않고, 구현된 메서드로만 판단하는 방식입니다.덕 타이핑은 "만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라 부르겠다."라는 덕 테스트(오리 테스트)에서 유래한 말입니다. class Duck: # 오리 클래스를 만들고 quack과 feathers 메서드 정의 def quack(self): print('꽥~!') def feathers(self): print('오리는 흰색과 회색 털을 가지고 있습니다.') class Person: # 사람 클래스를 만들고 quack과 feathers 메서드 정의 def quack(self).. 2026. 1. 29.