본문 바로가기

전체 글399

모듈과 패키지 Unit 44. 모듈과 패키지 사용하기 지금까지 파이썬 코드를 작성하면서 input, print 등의 내장 함수(built-in function)를 주로 사용했는데, 내장 함수만으로는 할 수 있는게 별로 없습니다. 그래서 좀 더 복잡한 프로그램을 만들려면 파이썬의 모듈과 패키지를 사용해야 합니다. 우리가 책 중간 중간에 사용했던 random, turtle, pickle 등이 바로 모듈과 패키지입니다. 모듈(module)은 각종 변수, 함수, 클래스를 담고 있는 파일이고, 패키지(package)는 여러 모듈을 묶은 것입니다. 파이썬을 설치할 때 다양한 모듈과 패키지가 기본으로 설치됩니다. 만약 기본 모듈과 패키지로 부족하다면 다른 사람이 만든 유명 모듈과 패키지를 설치해서 쓸 수도 있습니다. 참고 | 모듈.. 2023. 11. 28.
정규표현식 메타 문자 설명 [] 문자, 숫자 범위를 표현하며 +, -, . 등의 기호를 포함할 수 있음 {개수} 특정 개수의 문자, 숫자를 표현 {시작개수, 끝개수} 특정 개수 범위의 문자, 숫자를 표현 + 1개 이상의 문자를 표현. 예) a+b는 ab, aab, aaab는 되지만 b는 안 됨 * 0개 이상의 문자를 표현. 예) a*b는 b, ab, aab, aaab ? 0개 또는 1개의 문자를 표현. 예) a?b는 b, ab . 문자 1개만 표현 ^ [ ] 앞에 붙이면 특정 문자 범위로 시작하는지 판단 [ ] 안에 넣으면 특정 문자 범위를 제외 $ 특정 문자 범위로 끝나는지 판단 | 여러 문자열 중 하나라도 포함되는지 판단 ( ) 정규표현식을 그룹으로 묶음, 그룹에 이름을 지을 때는 ?P 형식 예) (?P[a-z.. 2023. 11. 28.
데코레이터 1. 데코레이터 사용하기 파이썬은 데코레이터(decorator)라는 기능을 제공합니다. 데코레이터는 장식하다, 꾸미다라는 뜻 지금까지 클래스에서 메서드를 만들 때 @staticmethod, @classmethod, @abstractmethod 등을 붙였는데, 이렇게 @로 시작하는 것들이 데코레이터입니다. 즉, 함수(메서드)를 장식한다고 해서 이런 이름이 붙었습니다. 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용합니다. class Calc: @staticmethod # 데코레이터 def add(a, b): print(a + b) 1) 데코레이터 만들기 예를 들어서 함수의 시작과 끝을 출력하고 싶다면 다음과 같이 함수 시작, 끝 부분에 print를 넣어주어야 합니다. def hell.. 2023. 11. 28.
코루틴 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)입니다. 이 메인 루틴과 서브 루틴의 동작 과정을 그림으로 나타내면 다음과 같은 모양이 됩니다. 메인 루틴에서 서브 루틴을 호출하면 서브 루틴의 코드를 실행한 뒤 다시 메인 루틴으로 돌아옵니다. 특히 서브 루틴이 끝나면 서브 루틴의 내용은 모두.. 2023. 11. 28.
제너레이터 1. 제너레이터 사용하기 제너레이터는 이터레이터를 생성해주는 함수입니다. 이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 하지만 제너레이터는 함수 안에서 yield라는 키워드만 사용하면 끝입니다. 그래서 제너레이터는 이터레이터보다 훨씬 간단하게 작성할 수 있습니다. 참고로 제너레이터는 발생자라고 부르기도 합니다. 이 책에서는 제너레이터를 사용하겠습니다. 함수 안에서 yield를 사용하면 함수는 제너레이터가 되며 yield에는 값(변수)을 지정합니다. yield 값(변수) def number_generator(): yield 0 yield 1 yield 2 for i in number_generator(): print(i) 0 1 2 1) 제너레이터 객체.. 2023. 11. 28.
이터레이터 이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)입니다. 데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)라고 합니다. 참고로 이터레이터는 반복자라고 부르기도 합니다. 이 책에서는 이터레이터를 사용하겠습니다. 1. 반복 가능한 객체 (iterable) 반복 가능한 객체는 말 그대로 반복할 수 있는 객체인데 우리가 흔히 사용하는 문자열, 리스트, 딕셔너리, 세트가 반복 가능한 객체입니다. 즉, 요소가 여러 개 들어있고, 한 번에 하나씩 꺼낼 수 있는 객체입니다. 객체가 반복 가능한 객체인지 알아보는 방법은 객체에 __iter__ 메서드가 들어있는지 확인해보면 됩니다. dir(객체) >>> dir([1, 2, 3]) ['__add__', '_.. 2023. 11. 28.
회문 판별과 N-gram 만들기 1. 회문( palindrome ) 판별하기 회문(palindrome)은 순서를 거꾸로 읽어도 제대로 읽은 것과 같은 단어와 문장을 말합니다. 예를 들면 "level", "SOS", "rotator", "nurses run"과 같은 단어와 문장이 있지요. 1) 반복문으로 문자 검사하기 이제 반복문으로 문자열의 각 문자를 검사해보겠습니다. palindrome.py word = input('단어를 입력하세요: ') is_palindrome = True # 회문 판별값을 저장할 변수, 초깃값은 True for i in range(len(word) // 2): # 0부터 문자열 길이의 절반만큼 반복 if word[i] != word[-1 - i]: # 왼쪽 문자와 오른쪽 문자를 비교하여 문자가 다르면 is_pa.. 2023. 11. 28.
파일 다루기 메서드 설명 read() 파일에서 문자열을 읽음 write('문자열') 파일에 문자열을 씀 readline() 파일의 내용을 한 줄 읽음 readlines() 파일의 내용을 한 줄씩 리스트 형태로 가져옴 writelines(문자열리스트) 파일에 리스트의 문자열을 씀, 리스트의 각 문자열에는 \n을 붙여주어야 함 pickle.load(파일객체) 파일에서 파이썬 객체를 읽음 pickle.dump(객체, 파일객체) 파이썬 객체를 파일에 저장 1. 파일에 문자열 쓰기, 읽기 이제부터 파일에 문자열을 써서 파일을 만든 뒤에 만든 파일을 읽는 순서로 진행하겠습니다. 1) 파일에 문자열 쓰기 파일객체 = open(파일이름, 파일모드) 파일객체.write('문자열') 파일객체.close() file_write_stri.. 2023. 11. 28.
set 메서드 집합 연산자 설명 set.union(세트1, 세트2) | 두 세트의 합집합 set.intersection(세트1, 세트2) & 두 세트의 교집합 set.difference(세트1, 세트2) - 두 세트의 차집합 set.symmetric_difference(세트1, 세트2) ^ 두 세트의 대칭차집합 update(다른세트) |= 현재 세트에 다른 세트를 더함 intersection_update(다른세트) &= 현재 세트와 다른 세트 중에서 겹치는 요소만 현재 세트에 저장 difference_update(다른세트) -= 현재 세트에서 다른 세트를 뺌 symmetric_difference_update(다른세트) ^= 현재 세트와 다른 세트 중에서 겹치지 않는 요소만 현재 세트에 저장 issubset(다른.. 2023. 11. 27.