시퀀스를 결과로 만들어내는 함수를 만들 때 가장 간단한 선택은 원소들이 모인 리스트를 반환하는 것이다.예를 들어 문자열에서 찾은 단어의 인덱스를 반환하고 싶다고 하자아래 코드는 append 메서드를 이용해 리스트에 결과를 추가하고 함수 마지막에 리스트를 반환한다.def
왈러스 연산자:= 는 if나 while문등 조건식에 대입후 실제 평가가 이루어짐. (왈러스는 바다코끼리 눈과 어금니 처럼 생겨서 붙여진 이름)예시 코딩을 위한 코드들 pass 해도 무관기존에는 레몬의 개수를 읽은 후 if문을 통해 그 값이 0인지 아닌지 확인이 가능하다
스트라이드와 슬라이스를 한 식에 함께 사용하지 말라스트라이드 : 리스트시작 : 끝 : 증가값으로 일정한 간격을 두고 슬라이싱을 할 수 있는 특별한 구문'빨강', '노랑', '파랑'단점 : 스트라이드를 사용할 때 예기치 못한 동작 발생 가능이 있다.ex : 기존에 사용하
13 슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라기존의 한계점은 언패킹할 시퀀스의 길이를 미리 알고 있어야 한다는 것car_ages = 0, 9, 4, 8, 7, 20, 19, 1, 6, 15car_ages_descending = sorted(car_ages
11, 68, 70, 86, 93TypeError Traceback (most recent call last) in 7 Tool('끌', 0.25), 8 ]\----> 9 tools.s
3.5버전에서는 딕셔너리를 저장할 때 강아지 -> 개 순으로 저장하더라도 개 --> 강아지순으로 저장되었다.위 문제는 개선되었다.class MyClass: def init(self): self.alligator = 'hatchling' s
딕셔너리 상호작용 세가지 \- 접근, 대입, 삭제딕셔너리는 동적으로 어떤 키에 접근하거나 키를 삭제할 때 그 키가 딕셔너리에 없을 수도 있음투표가 있을 때 카운터를 증가시키는 함수키가 없으면 새로운 값을 디폴트0으로 넣고 한번의 투표가 있기 때문에 +1을 해준다.Fa
get 메서드를 사용하는 방법이 in과 KeyError를 사용하는 방법보다 낫지만, 경우에 따라서 setdefault가 가장 빠른 지름길일 수도 있다{'미국': {'뉴욕', '로스엔젤레스'}, '일본': {'하코네', '교토'}, '프랑스': {'칸'}}예를 들어 클래
디폴트 값을 만드는 계산 비용이 높거나 만드는 과정에서 setdefault를 사용하지 말라default 함수를 사용해야하지만 전달되는 함수 인자는 받지 않는다, 그래서 missing메서드로 정의하여 사용하라0b''file : 파일 경로mode : 파일이 열리는 모드'r
ex) 악어 개체군에 대한 여러 통계를 계산한다고 하자.학어의 몸 길이 정보를 담은 list를 이용해 개체군에서 가장 긴 악어와 가장 짧은 악어의 몸 길이를 계산해야한다.최소: 60, 최대: 73first는 1 second는 2 first는 1 second는 2별표식을
유틸리티 함수를 작성할 때 반환 값을 None으로 하면서 이 값이 특별한 의미를 부여하려는 경향을 나타낸다.잘못된 입력None자수가 0일 경우에는 0값을 반환한다.그 경우 if 함수에서 0을 flase로 받아드려 실행이 된다.def careful_divide(a, b)
숫자로 이뤄진 list를 정렬하되, 정렬한 리스트의 앞쪽에는 우선순위를 부여한 몇몇 숫자를 위치시켜야 한다고 가정하자. \- 리스트의 sort 메서드에 key인자로 도우미 함수를 전달하는 것 \- list는 각 원소를 정렬할 때 이 도우미 함수가 반환하는 값을 기준
위치 인자를 가변적으로 받을 수 있으면 함수 호출이 더 깔끔해지고 시각적 잡음도 줄어든다.예를 들어 디버깅 정보를 로그에 남기고 싶다고 하자인자가 고정돼 있으면 메시지와 값의 list를 받는 함수가 필요하다.def log(message, \*values): i
File "", line 2 remainder(number=20, 7) ^SyntaxError: positional argument follows keyword argumentTypeError
종종 키워드 인자의 값으로 정적으로 정해지지 않는 타입의 값을 써야 할 때가 있다.ex) 로그 메시지와 시간을 함께 출력하고 싶다고 하자.기본적으로 함수 호출 시간을 포함하길 원한다.2021-07-02 15:01:26.731556: 안녕!2021-07-02 15:01:
키워드를 사용해 인자를 넘기는 기능은 파이썬 함수의 강력한 기능이다.키워드 인자의 유연성을 활용하면 여러분의 코드를 처음 읽는 사람도 더 명확하게 용례를 이해할 수 있는 함수를 작성할 수 있다.0inf문제는 어떤 예외를 무시할지 결정하는 두 불 변수의 휘치를 혼동하기
호출되기 전과 후에 코드를 추가로 실행 해준다.데코레이터가 자신이 감싸고 있는 함수의 입력 인자, 반환 값, 함수에서 발생한 오류에 접근할 수 있다는 뜻이다.함수의 의미를 강화하거나 디버깅을 하거나 함수를 등록하는 등의 일에 이런 기능을 유용하게 쓸 수 있다.@ 기호를
다른 시퀀스나 이터러블에서 새 리스트를 만들어내는 간결한 구문을 제공1, 4, 9, 16, 25, 36, 49, 64, 81, 1001, 4, 9, 16, 25, 36, 49, 64, 81, 100<map object at 0x0000016144ED3898>4,
컴프리헨션은 기본적인 사용법 외에도 루프를 여러 수준으로 내포하도록 허용한다,1, 2, 3, 4, 5, 6, 7, 8, 9다중 루프가 사용이 타당한 다른 예로는 2단계 깊이로 구성된 입력 list 구조를 복제하는 경우를 들 수 있다.\[1, 4, 9, 16, 25, 3
예를 들어 파트너 회사에서 주문을 관리하기 위한 프로그램을 작성한다고 하자.고객이 새로운 주문을 보내면 주문을 처리할 만한 재고가 있는지 알려줘야 한다.그러려면 고객의 요청이 재고 수량을 넘지 않고, 배송에 필요한 최소 수량을 만족하는지 확인해야 한다.{'나사못': 4
객체가 원소로 들어 있는 리스트를 함수가 파라미터로 받았을 때, 이 리스트를 여러 번 이터레이션하는 것이 중요할 때가 있다.예를 들어 미국 텍사스 주의 여행자 수를 분석하고 싶다고 하자. 데이터 집합이 도시별 방문자 수라고 가정하자. 이때 각 도시가 전체 여행자 수 중
리스트 컴프리헨션의 문제점은 입력 시퀀스와 같은 수의 원소가 들어 있는 리스트 인스턴스를 만들어낼 수 있다는 것이다.입력이 작으면 큰 문제가 되지 않지만, 입력이 커지면 메모리를 상당히 많이 사용하고 그로 인해 프로그램 중단될 수 있다.예를 들어 파일을 읽어 각 줄에
제너레이터에는 여러 장점이 있고, 제너레이터에서 발생할 수 있는 일반적인 문제를 해결할 방법도 있다.제너레이터가 아주 유용하기 때문에 다양한 곳에 제너레이터가 쓰이고 있으며, 이로인해 제너레이터를 여러 단계에 걸쳐 한줄기로 연결한 것처럼 보이는 프로그램도 많다.예를들어
yield식을 사용하면 제너레이터 함수가 간단하게 이터레이션이 가능한 출력 값을 만들어낼 수 있다.하지만 이렇게 만들어내는 채널은 단방향이다.제너레이터가 데이터를 내보내면서 다른 데이터를 받아들일 때 직접 쓸 수 있는 방법이 없는 것처럼 보인다.하지만 이런 양방향 통신
yield from식과 send 메서드 외에, 제너레이터 안에서 Exception을 다시 던질 수 있는 throw 메서드가 있다.throw가 작동하는 방식은 간단하다. \- 제너레이터에 대해 throw가 호출되면 이 제너레이터는 값을 내놓은 yield로 부터 평소처럼
intertools 내장 모듈에는 이터레이터를 조직화하거나 사용할 때 쓸모 있는 여러 함수가 들어 있다.𝑖𝑚𝑝𝑜𝑟𝑡 𝑖𝑡𝑒𝑟𝑡𝑜𝑜𝑙𝑠 복잡한 이터레이션 코드를 작성하고 있다는 사실을 깨달을 때마다 쓸만한 기능이 없는지 itertools 문
파이썬 내장 딕셔너리 타입을 사용하면 객체의 생명 주기 동안 동적인 내부 상태를 잘 유지할 수 있다.동적이라는 말은 어떤 값이 들어올지 미리 알 수 없는 식별자들을 유지해야 한다는 뜻이다.90.0예를 들어 simpleGradebook클래스를 확장해서 전체 성적이 아니라
파이썬 내장 API중 상당수는 함수를 전달해서 동작을 원하는 대로 바꿀 수 있게 해준다.API가 실행되는 과정에서 여러분이 전달한 함수를 실행하는 경우 이런함수를 훅이라고 부른다.리스트 타입의 sort메서드는 정렬 시 각 인덱스에 대응하는 비교값을 결정하는 선택적인 k
일반적인 경우인스턴스 메소드안에 인스턴스 변수를 접근할 때, 첫 번째 인자에 객체 할당8TypeError Traceback (most recent call last) in 1 ----> 2 Custom
자식 클래스에서 부모 클래스를 초기화하는 오래된 방법은 바로 자식 인스턴스에서 부모 클래스의 init 메서드를 직접 호출하는 것아래 접근 방법은 기본적인 클래스 계층의 경우에는 잘 작동하지만 다른경우에는 잘못될 수 있다.어떤 클래스가 다중 상속에 의해 영향을 받은 경
파이썬은 다중 상속을 처리할 수 있게 지원하는 객체지향 언어하지만 다중 상속은 피하는편이 좋다.믹스인(mix-in)은 자식 클래스가 사용할 메서드 몇 개만 정의하는 클래스믹스인 클래스에는 자체 애트리부트 정의가 없으므로 믹스인 클래스의 init 메서드를 호출할 필요도
파이썬에서 클래스의 애트리뷰트에 대한 가시성은 공개와 비공개 두가지밖에 없다.객체 뒤에 점 연산자(.)를 붙이면 공개 애트리뷰트에 접근할 수 있다.5애트리뷰트 이름 앞에 밑줄 두 개(\_\_) 붙이면 비공개 필드가 된다.비공개 필그를 포함하는 클래스 안에 있는 메서드에
모든 파이썬 클래스는 함수와 애트리뷰트를 함께 캡슐화하는 일종의 컨테이너라 할 수 있다.파이썬은 데이터를 관리할 때 사용할 수 있도록 리스트, 튜플, 집합, 딕셔너리 등의 내장 컨테이너 타입을 제공한다.시퀀스처럼 사용법이 간단한 클래스를 정의할 때는 파이썬 내장 리스트
concurrent.futures란 : 비동기 작업(병렬)을 시작하기 위한 높은 수준의 API를 제공하는 표준 라이브러리의 일부입니다class concurrent.futures.Executor 란 : 비동기적으로 호출을 실행하는 메서드를 제공하는 추상 클래스입니다. 직
파이썬에서 c언어를 사용하여 높은 연산 성능을 이끄는데 좋지만 비용이 매우 크다.파이썬의 concurrent.futures 내장 모듈을 통해 사용할 수 있는 multiprocessing내장모듈이 어려운 문제를 풀기위한 해결책일 수 있다.ThreadpoolExecuter
디버깅은 버그(오류)가 발생한 위치를 파악해서 분석한 후 올바르게 고치는 과정파이썬 프로그램을 디버깅할 때 print 함수와 형식화 문자열을 사용하거나 logging 내장 모듈을 사용해 출력을 만들면 아주 긴 출력이 생긴다.우리에게 필요한 작업은 프로그램이 실행되는 동