리스트 컴프리헨션은 다중 루프를 이용 할 수 있어요. 예를들어 행렬을 모든 셀이 포함되 ㄴ평평한 리스트 하나로 간략화한다고 가정해보조.다음은 for표현식 두개를 사용한 리스트 컴프리헨션이에요또 다른 사용법은 입력 리스트의 레이아웃을 두 레벨로 중복해서 구성하는 것이다.
리스트 컴프리헨션의 문제점은 입력 시퀀스에 각 값별로 아이템을 하나씩 담은 새 리스트를 통째로 생성한다는 점이다.입력이 적을 떄는 괜찮지만 클 떄는 메모리를 많이 소모해서 프로그램을 망가뜨리는 원인이 되기도 한다. 예를 들어 파일을 읽고 각 줄에 있는 문자의 개수를
파이썬에서 관련 객체로 구성된 리스트를 많이 사용한다는 사실은 쉽게 알수 있어요. 리스트 컴프리헨션을 사용하면 source list에 표션식을 적용하여 파생리스트(derived list)를 쉽게 얻을 수 있어요파생 리스트의 아이템과 소스 리스트의 아이템은 서로 인덱스로
루프에서 반복되는 내부 블록 다음에 else 블록을 둘 수 있다.else블럭은 루프가 끝나면 실행된다. 왜? else라고 부를까? and라고 안하고? if/else처럼 else 이전 블록이 실행되지 않으면 이 블록을 싱핸되다는 의미인데.. try/except문에서 ex
예외 처리 과정에서 동작을 넣을 수 있는 네 번의 구분되는 시점이 있어요.try, except, else, finaly 블록 기능으로 각 시점을 처리 할 수 있어요.각 블록은 복함문에서 독자적인 목적이 있으며, 이블록들을 다양하게 조합하면 유용해요.예외를 전달하고 싶지
유틸리티 함수 작성 시 반환 값 None에 특별한 의미를 부여하는 경향이 있어요.예를들어 어떤 숫자를 다른 숫자로 나누는 헬퍼 함수를 생각해보죠. 0으로 나누는 경우에는 결과가 정의되어 있지 않기 때문에 None을 반환하는게 자연스러워요.이 함수를 사용하는 코드는 반환
숫자 리스트를 정렬할 때 특정 그룹의 숫자들이 먼저 오도록 우선순위를 매기려고 한다고 하자. 이런 패턴은 사용자 인터페이스를 표현하거나, 다른 것보다 중요한 메시지나 예외 이벤트를 먼저 보여줘야 할 때 유용해요.이렇게 만드는 일반적인 방법은 리스트의 sort메서드에 헬
range보다는 enumerate를 사용하자 내장함수 range는 정수 집합을 순회(iterate)하는 루프를 실행할 때 유용해요. 참고로 비트 연산자 or 그리고 왼쪽, 오른쪽으로 이동시키는 shift연산자임 문자열의 리스트 같은 순회할 자료 구조가 있을 때는
리스트를 반환하는 대신 제너레이터를 고려하자 일련의 결과를 생성하는 함수에서 택할 가장 간단한 방법은 아이테므이 리스트를 반환하는 것이에요. 예를 들어 문자열에 있는 모든 단어의 인덱스를 출력하고 싶다고 하자. 다음 코드에서는 append 메서드로 리스트에 결과들을 누
파라미터로 객체의 리스트를 받는 함수에서 리스트를 여러 번 순회해야 할 때가 있다. 특정 도시의 여행자 수를 분석하고 싶은 경우, 데이터 집합은 각 도시의 방문자 수라고 하자. 각 도시에서 전체 여행자 중 몇 퍼센트를 받아들이는지 알고 싶을 것이다.이런 작업을 하려면
선택적인 위치 인수(이런 파라미터의 이름을 관례적으로 \*args라고해서 종종 'star args'라고도 함)를 받게 만들면 함수 호출을 더 명확하게 할 수 있고 보기에 방해가 되는 요소를 없앨 수 있다.예를 들어 디버그 정보 몇 개를 로그로 남긴다고 해보자. 인수의
함수를 호출할 시 인수를 위치로 전달 할 수 있다.파이썬 함수의 위치 인수를 모두 키워드로 전달 할 수도 있어요. 이때 인수의 이름을 함수 호출의 괄호 안에 있는 할당문에서 사용해요. 이때 인수의 이름을 함수 호출의 괄호 안에 있는 할당문에서 사용해요. 필요한 위치 인
키워드 인수의 기본값으로 비정적타입을 사용해야 할 때도 있다.예. 이벤트 발생 시각까지 포함해 로깅 메시지를 출력한다고 하자. 기본적인 경우에는 함수를 호출한 시각을 메시지에 포함하려고 한다. 함수가 호출될 때 마다 기본 인수를 평가한다고 가정하고 다음과 같이 처리하려
키워드로 인수를 넘기는 방법은 파이썬 함수의 강력한 기능이에요.키워드 인수의 유연성 덕분에 쓰임새가 분명하게 코드를 작성 할 수 있어요.예. 어떤 숫자를 다른 숫자로 나눈다고 하자. 이 경우 특별한 경우에 주의해야 한다. 때로는 ZeroDivisionError 예외를
파이썬에 내장되어 있는 딕셔너리 타입은 객체의 수명이 지속되는 동안 동적인 내부 상태를 관리하는 용도로 아주 좋다. 여기서 '동적'이란 예상하지 못한 식별자들을 관리해야 하는 상황을 뜻한다.예를 들어 이름을 모르는 학생 집단의 성적을 기록하고 싶다고 해보자. 학생별로
파이썬 내장 API의 상당수에는 함수를 넘겨서 동작을 사용자화하는 기능이 이싿. API는 이런 후크를 이용해서 누군가 작성한 코드를 실행중에 호출해요.예를들어 list타입의 sort 메서드는 정렬에 필요한 각 인덱스의 값을 결정하는 선택적인 key 인수를 받아요. 다음
다형성은 계층 구조에 속한 여러 클래스가 자체의 메서드를 독립적인 버전으로 구현하는 방식이다. 다형성을 이용하면 여러 클래스가 같은 인터페이스나 추상 기반 클래스를 충족하면서도 다른 기능을 제공할 수 있다.예를 들어 맵리듀스(MapReduce)구현을 작성할 때 입력 데
기존에는 자식 클래스에서 부모 클래스의 init 메서드를 직접 호출하는 방법으로 부모 클래스를 초기화했어요.이 방법은 간단한 계층 구조에는 잘 동작하지만 많은 경우 제대로 동작하지 못한다.클래스가 다중 상속(보통은 피해야할 방법)의 영향을 받는다면 슈퍼클래스의 \_\_