왜 파이썬의 버전을 알아야할까요?이유는 간단합니다. 버전이 최신이면 최신일수록 가장 지원이 잘되기 때문입니다. 그래서 파이썬2가 아닌 파이썬3를 쓰는 것을 권장합니다.그렇다면, 파이썬 버전은 어떻게 알 수 있나요?PEP8이란?파이썬 코드를 어떤 형식으로 작성할지 잘 알
이런 유형의 인스턴스는 부호가 없는 8바이트 데이터가 그대로 들어간다.아스키 인코딩을 사용해 내부 문자 표시직접 대응하는 텍스트 인코딩이 없다이진 데이터를 유니코드 데이터로 변환(decode메서드 호출)\*예시1def to_bytes(bytes_or_str):print
파이썬 코드에는 문자열을 많이 쓴다.사용자 인터페이스 또는 명령줄 유틸리티에 메시지 표시파일과 소켓에 데이터를 쓰기잘못된 일 발생 시, Exception에 자세히 기록할 때 컴프리헨션을 이용해서 문자열 사용디버깅 발생 시, 대화형 혹은 repr문자열 사용미리 정의된 문
도우미 함수를 작성해야하는 이유?결국에 우리는 가독성의 문제를 항상 염두해야합니다. 가독성이 좋은 코드를 짜려고 노력해야하고 반복적인 표현으로 인해 식의 복잡성을 피해야합니다.그러므로, 단순히 코드를 나열하는 것은 전혀 좋지 못합니다.그렇다면 어떻게 도우미 함수를 짤
인덱스 사용 파이썬에는 tuple을 사용하면 값으로 이뤄진 불변의 순서쌍을 만들어 내고, 가장 짧은 튜플은 딕셔너리의 키-값 쌍과 비슷하게 두 값으로 이뤄집니다. *예시1 *예시2(튜플에 있는 값은 숫자 인덱스 사용하여 접근 가능) *예시3(튜플이 만들어지면 새
range함수는 어떤 정수 집합을 이터레이션하는 루프가 필요할 때 유용flavor_list = '바닐라'. '초콜릿', '피칸', '딸기'for flavor in flavor_list: print(f'{flavor} 맛있어요.')바닐라 맛있어요초콜릿 맛있어요피칸
리스트 컴프리헨션을 사용하면 소스 list에서 새로운 list를 파생시키기 쉽습니다.만들어진 list의 각 원소는 소스 list에서 같은 인덱스 위치에 있는 원소와 관련이 있기에 두 리스트를 동시에 이터레이션할 경우 names 소스 리스트의 길이를 사용해서 이터레이션하
다른 프로그래밍 언어와 달리 파이썬은 루프가 반복 수행하는 내부 블록 다음에 else추가 가능장점은 처리할 예외가 없는 경우 이 블록을 실행하라는 의미를 갖고 있기에 루프가 끝나고 실행이 가능하다루프 안에서 break 사용 시 else 블록 실행 안됨빈 시퀀스에 대해
대입식a := b(왈러스 연산자 사용)고질적인 코드 중복 문제 해결대입문이 쓰일 수 없는 우치에서 변수에 값을 대입하므로 유용명확성과 코드의 가독성 증가변수에 값 대입 후 이 값을 평가하여 프로그램 흐름을 어떻게 제어할지 판단\*예시1\*예시2\*예시3
슬라이싱을 사용하면 최소한의 노력으로 시퀀스에 들어있는 아이템의 부분집합을 접근하기 쉽다.어떤 파이썬 클래스에도 슬라이싱 추가 가능특별 메서드 구현getitem , \_\_setitem슬라이싱 구분: 리스트시작:끝시작 인덱스에 있는 원소는 슬라이스에 포함되지만, 끝 인
스트라이드(Stride)파이썬은 리스트시작:끝:증가값으로 일정한 간격을 두고 슬라이싱증가값을 이용하여 원하는 간격(등차수열로 얻기 가능)x = b'mongoose'y = x::-1print(y) \`\`\`스트라이딩한 다음 슬라이싱하면 데이터를 한 번 얕게 복사하게 된
슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라 기본 언패킹의 유일한 단점은 바로 시퀀스의 길이를 미리 정해야합니다.(그렇지 않으면 에러 발생) *슬라이싱 원하는 결과는 나올지라도 시각적 잡음이 심하다 지금은 집합이 적지만 여러 집합이 생기면 인덱스 오류
list 내장 타입에 들어있는 리스트의 원소를 여러 기준에 따라 정렬하는 메서드자연스러운 순서가 있어야하는 경우, 필요한 메서드를 정의하면 별도의 인자를 넘기지 않고 sort 가능sort는 리스트의 내용을 원소 타입에 따른 오름차순으로 정렬sort메서드는 내장타입(문
문제점출력 파일 핸들에 대한 open, close, write 호출이 주 이벤트 루프에서 이뤄진다.운영체제의 시스템 콜을 사용하므로 이벤트 루프를 상당히 오랫동안 블록할 수 있다.동시성이 아주 높은 서버에서는 응답 시간이 늘어날 수 있다.시스템 콜(블로킹 I/O와 스레
TestCase 하위 클래스 안에서 setUP과 tearDown 메서드를 오버라이드setUP: 테스트 전에 호출tearDown: 테스트 메서드를 실행한 후에 호출모듈 사이의 end to end 상화작용 검증하는 테스트는 단위 테스트와 통합 테스트이유: 모듈이 제대로 작
TestCase 하위 클래스 안에서 setUP과 tearDown 메서드를 오버라이드setUP: 테스트 전에 호출tearDown: 테스트 메서드를 실행한 후에 호출모듈 사이의 end to end 상화작용 검증하는 테스트는 단위 테스트와 통합 테스트이유: 모듈이 제대로 작
래퍼 객체를 사용해서 데이터베이스 인터페이스를 캡슐화하는 것이다.더 나은 추상화를 사용하면 목이나 테스트를 더 쉽게 만들 수 있다.이제 unittest.mock.path를 사용해서 목을 테스트 대상 코드에 주입할 필요가 없기에 do_rounds에 대한 테스트를 작성하기
\-- 프로그램의 상태 보기지역 변수 출력한 번에 한 문장씩 실행BREAKPOINT 내장 함수를 호출Pdb 프롬포트p<이름>으로 지역 변수 이름 입력locals 내장 하무를 호출하면 모든 지역 변수 목록 보기Pdb 프롬포트에서 모듈 임포트새로운 객체 만들기help
Cpython 런타임이 메모리 관리를 알아서 해주기 때문에 메모리 사용 혹은 누수를 알 수가 없다.gc 내장 모듈 사용현재 쓰레기 수집기가 알고 있는 모든 객체를 나열둔탁한 방법이지만 프로그램 메모리가 어디에 있는지 빠르게 잡을 수 있다.gc 내장 모듈 사용해서 실행
파이썬에는 프로그램 설치하고 사용할 수 있는 모듈을 모아둔 중앙 저장소인 (pypi.org)라는 곳이 있다.이러한 모듈은 파이썬을 이용하는 사람들로부터 만들어지고 유지보수가 된다.그러므로, 어려운 난제에 직면할 시 파이썬 패키지 인덱스(PyPI)에서 찾아 보기패키지 인
파이썬은 언어 자체의 동적인 특성으로 인해 문서화가 중요하다.파이썬에서는 프로그램을 실행하는 중에서 프로그램 소스 코드의 문서에 직접 접근할 수 있다."""단어의 언어 패턴을 찾을 때 쓸 수 있는 라이브러리여러 단어가 서로 어떤 연관 관계에 있는지 검사하는 것이 어려울
패키지패키지 사용 이유: 함수로 구성된, 클래스로 구성된 모듈이 점점 많아져서 코드를 이해하기 어려워지면 다른 계층을 추가 도입하여 코드를 좀 더 이해하기 쉽게 바꾼다. 즉, 다른 모듈들을 포함하는 모듈특징init.py라는 이름의 빈 파일을 디렉토리에 추가하여 패키지
배포 환경은 프로그램이 실행될 설정을 뜻하고 보통 모든 프로그램에는 배포 환경이 적어도 하나는 있는데 그것을 프로덕션 환경이라고 한다.프로그램을 작성하는 궁국적인 목표는 프로덕션 환경에서 프로그램을 실행해 원하는 결과를 얻어내는 것이다.프로그램에서 한 줄만 변경한 뒤
모듈 API에선 모듈 내에 여러분이 정의한 함수 혹은 클래스만큼이나 여러분이 발생시킬 예외도 API의 일부분으로서 중요하고 파이썬 언어와 표준 라이브러리에는 이미 예외 계층 구조가 내장이 되어있기에직접 정의한 새로운 예외 타입을 사용해서 오류를 보고하는 것이나 내장 예
다른 사람들과 협업하다 보면 불가피하게 모듈들이 상호 의존하는 경우가 생기고 혼자 작업을 할 때도 발생할 수 있다모듈이 임포트될 때 깊이 우선순위sys.path에서 모듈 위치를 검색한다.모듈의 코드를 로딩하고 컴파일되는지 확인한다.임포트할 모듈에 상응하는 빈 모듈 객체
코드베이스가 커지면서 API를 호출하는 지점 수가 많아지거나 여러 소스 코드 저장소에 호출 지점이 흩어지면, API변경과 호출 지점 변경을 함께 일관성 있게 수행하는 것이 어려울 수 있다. 그러므로, 자신의 코드를 리팩터링하고 여러분의 API를 사용하는 부분을 최신 A
문서는 API 사용자가 API를 제대로 사용하는 방법을 알려주는 훌륭한 방법이다. 그러나, 문서로 부족한 경우도 있고 잘못 사용 시 버그가 생긴다.여러분의 코드가 하위 의존 관계를 올바른 방법으로 활용하는지 검사하는 매커니즘이 있어야한다.사실 파이썬은 동적 기능에만 맞