.pyc 파일
- 개발
- · 2025. 6. 10.
클래스와 상속을 사용하는 방법을 잘 알아두면 유지 보수하기 쉬운 코드를 작성할 수 있다. 파이썬 내장 딕셔너리 타입을 사용하면 객체의 생명 주기 동안 동적인 내부 상태를 잘 유지할 수 있다.동적이라는 말은 어떤 값이 들어올지 미리 알 수 없는 식별자들을 유지해야 한다는 뜻이다.예를 들어 학생들의 점수를 기록해야 하는데, 이름은 미리 알 수 없는 상황이라고 하자.class SimpleGradeBook: def __init__(self): self._grades = {} def add_student(self, name): self._grades[name] = [] def report_grade(self, name, score): self._..
다음은 제너레이터를 사용해 화면의 이미지를 움직이게 하는 그래픽 프로그램 예제이다.처음에는 이미지가 빠르게 이동하고, 잠시 멈춘 다음, 다시 이미지가 느리게 이동한다.def move(period, speed): for _ in range(period): yield speeddef pause(delay): for _ in range(delay): yield 0def animate(): for delta in move(4, 5.0): yield delta for delta in pause(3): yield delta for delta in move(2, 3.0): yield deltadef render(delta): ..
리스트 컴프리헨션의 입력이 커지면 메모리를 상당히 많이 사용하고, 그로 인해 프로그램이 중단될 수 있다. 이 문제를 해결하기 위해 파이썬은 제네레이터 식을 제공한다.제네레이터 식을 실행해도 출력 시퀀스 전체가 실체화되지 않고, 이터레이터가 생성된다.it = (len(x) for x in open('my_file.txt')) 두 제네레이터 식을 합성할 수도 있다.roots = ((x, x ** 0.5) for x in it) 다만 제네레이터가 반환하는 이터레이터에는 상태가 있기 때문에 한 번만 사용해야 한다.
입력 전체의 합계를 내고 각 원소를 나누는 정규화 함수가 있다고 하자.def normalize(numbers): total = sum(numbers) result = [] for v in numbers: percent = 100 * v / total result.append(percent) return result 이 함수에 데이터가 들어 있는 리스트를 입력하면 잘 작동한다.visits = [15, 35, 80]percetages = normalize(visits)print(percetages)>>>[11.538461538461538, 26.923076923076923, 61.53846153846154] 코드의 확장성을 높이기 위해 데이터를 파일에서 읽어온다..
리스트에 결과를 추가하고 반환하는 코드는 잡음이 많고, 모든 결과를 리스트에 다 저장해야 하므로 메모리를 많이 소진한다.def index_words(text): result = [] if text: result.append(0) for index, letter in enumerate(text): if letter == ' ': result.append(index + 1) return resultaddress = '서울특별시 양천구 목동동로 12길 60'result = index_words(address)print(result)>>>[0, 6, 10, 15, 19] 제네레이터를 사용하면 함수 내부에서 리스트와 상호작용하는 코드가 사라지므로 ..