- [BW 7] range보다는 enumerate를 사용하라31514💡 리스트를 이터레이션하면서 리스트의 몇 번째 원소를 처리 중인지 알아야 할 때는 enumerate를 사용하는 것이 좋다. range를 사용한 코드animal_list = ['수달', '아기비단털쥐', '짱구']for i in range(len(animal_list)): animal = animal_list[i] print(f'{i + 1}번은 {animal}.')>>>1번은 수달.2번은 아기비단털쥐.3번은 짱구.enumerate를 사용한 코드enumerate는 이터레이터를 지연 계산 제네레이터(lazy generator)로 감싼다.enumberate는 루프 인덱스와 이터레이터의 다음 값으로 이뤄진 쌍을 넘겨준다.# 다음 코드를 살펴보면 enumerate가 반환한 이터레이터가 어떻게 동작하는..
- 2024-10-22 16:02:41
- [BW 6] 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라31514💡 tuple : 값으로 이뤄진 불변 순서쌍을 만들어낼 수 있는 내장 타입💡 언패킹 구문 : 한 문장 안에서 여러 값을 대입할 수 있다. 언패킹 구문 예시 1animals = ('수달', '강아지')outer, dog = animalsprint(outer, '&', dog)>>>수달 & 강아지언패킹 구문 예시 2animals = [('모카', '수달'), ('짱구', '강아지')]for rank, (name, cate) in enumerate(animals, 1): print(f'#{rank}: {name}는 {cate}입니다.)>>>#1: 모카는 수달입니다.#2: 짱구는 강아지입니다.결론언패킹은 시각적인 잡음을 줄이고 코드를 더 명확하게 한다.
- 2024-10-22 16:01:46
- [BW 5] 복잡한 식을 쓰는 대신 도우미 함수를 작성하라31514파이썬은 문법이 간결하므로 상당한 로직이 들어가는 식도 한 줄로 작성할 수 있다. 다음과 같은 질의 문자열이 있다고 가정해보자.from urllib.parse import parse_qsvar = parse_qs('빨강=5&파랑=0&초록=', keep_blank_values=True)print(repr(var))>>>{'빨강': ['5'], '파랑': ['0'], '초록': ['']}파라미터가 없거나 비어 있을 경우 0이 디폴트 값으로 대입되게 하려면 어떻게 해야할까? 다음과 같이 if 문이 아닌, if 식을 사용할 수 있다.red = var.get('빨강', [''])[0] or 0green = var.get('초록', [''])[0] or 0outer = var.get('수달', [''])[0] or..
- 2024-10-22 16:00:24
- [BW 4] f-문자열을 통한 인터폴레이션31514💡 형식화 : 미리 정의된 문자열에 데이터 값을 끼워 넣어서 사람이 보기 좋은 문자열로 저장하는 과정 % 형식화 연산자 사용과 문제점a = 12345b = 6789print('a의 값: %d, b의 값: %d' % (a, b))>>>a의 값: 12345, b의 값: 6789형식 지정자 : %s, %x, %f, %d 등을 말하며, 해당 위치에 지정한 문자를 형식화한다. 첫 번째 문제점오른쪽에 있는 tuple 내 데이터의 순서를 바꾸거나 값의 타입을 바꾸면 오류가 발생할 수 있다.key = "outer"value = 8.23miss_ordered_tuple = '%-10s = %.2f' % (value, key)print(miss_ordered_tuple)>>>TypeError: must be real n..
- 2024-10-22 15:58:11
- [BW 2] PEP 8 스타일 가이드를 따르라31514💡 PEP 8 : 파이썬 코드를 어떤 형식으로 작성할지 알려주는 스타일 가이드 PEP 8의 장점코드에 더 친숙하게 접근하고, 가독성이 좋아진다.다른 파이썬 프로그래머들과 쉽게 협력할 수 있다. 공백탭 대신 스페이스를 사용해 4칸 들여쓰기하라.라인 길이는 79개 문자 이하여야 한다.긴 식을 다음 줄에 이어서 쓸 경우에는 4칸 들여쓰기하라.파일 안에서 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣어라.클래스 안에서 메서드와 메서드 사이에는 빈 줄을 한 줄 넣어라.딕셔너리에서 키와 콜론(:) 사이에는 공백을 넣지 않고, 콜론 다음에 빈 칸을 넣고 값을 넣어라.변수 대입에서 = 전후에 빈 칸을 넣어라.타입 표기를 덧붙이는 경우에는 변수 이름과 콜론 사이에 공백을 넣지 않도록 주의하고, 콜론과 타입 정보 사이에..
- 2024-10-22 15:55:35
- 뤼튼 캐릭터 크롤링31514오늘은 뤼튼 홈페이지에서 캐릭터 데이터를 크롤링하면서 부딪혔던 문제들에 대해 글을 쓰려고 합니다. 기능 요구사항위 이미지처럼 뤼튼에는 여러 캐릭터가 있습니다.여기서 이름, 썸네일 이미지, 설명, 만든 사람을 추출합니다. 그리고 캐릭터를 클릭하면 볼 수 있는 첫 메시지 또한 가져오고 이를 MySQL에 저장하는 간단한 기능입니다. 사용한 기술언어 : Python크롤링 도구 : Playwright오케스트레이션 툴 : Docker패키징 : pyproject참고 사항뤼튼은 캐릭터를 가상 스크롤링 기술을 사용하여, 동적으로 렌더링합니다.크롤링보다 더 좋은 방법은 뤼튼이 웹 사이트에 데이터를 전달하는 API의 패턴을 찾아보는 것이 더 좋습니다.뤼튼은 next_cursor를 사용하여 캐릭터 정보를 담고 있는 API를 ..
- 2024-10-13 23:06:46
- 새로운 웹 크롤링 도구 Playwright31514최근 셀레니움을 사용해서 웹 페이지를 크롤링하던 중, 아래와 같은 문제에 부딪혔다.StaleElementReferenceException 오류로 인한 신뢰성 감소크롬 드라이버가 멈춰 무한루프에 빠지는 문제문제를 해결하기 위해 다음과 같은 과정을 수행했다.특정 요소가 로딩되는 시간을 명시적으로 지정하기time.sleep()을 사용하여 충분한 대기 시간 보장하기StaleElementReferenceException 오류가 발생하면 잠깐의 대기 시간을 갖고 재시도하기그럼에도 불구하고 코드의 실행 시간만 증가할 뿐 문제는 해결되지 않았다.계속해서 고민하던 중 "내가 너무 하나의 도구에만 의존하고 있는 건 아닐까?"라는 생각이 들었다.그 결과 도입한 도구는 Playwright이다. Playwright이란?Play..
- 2024-09-27 13:40:28
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)