python
-
Python | 크롤링 도중 None 객체가 여러번 반환된다면?python 2022. 12. 21. 01:31
- 문제상황 Django 프로젝트를 진행하며 웹 스크랩핑을 하면서 문서에 요소가 존재하지 않아 None 객체를 반환하거나, IndexError가 반환되어 크롤링을 하던 프로그램이 멈추는 경험을 했다. 프로젝트 회고록은 이후 작성할 예정이다. 내가 팀장이 되어 팀원들이 크롤링 작업을 하는 상황이었다. 프로젝트를 진행하는 도중, 팀원 두명이 나에게 와 여러 개의 객체가 있을수도 있고 None일수도 있는 상황인데 모든 줄에 if-else를 추가해야 하냐고 물어보았다. import requests from bs4 import BeautifulSoup link = '' res = requests.get(link) soup = BeautifulSoup(res.text, 'html.parser') item = sou..
-
Django | URLConf 에서 lambda의 활용python 2022. 12. 7. 00:04
- 문제상황 Django 실습을 하면서 URLConf를 설정해 주다가 만약 사용자가 localhost:8000/ 으로 접속한다고 가정했을 때 localhost:8000/hotdeal/ 로 redirect를 해주려면 어떻게 코드를 작성할 지 고민 - 해결방안 프로젝트 관리 폴더에 views.py, urlpatterns에 함수 및 path 추가 # project_name/urls.py from django.urls import path, include from .views import redirect_func urlpatterns = [ path('hotdeal/', include('hotdeal.urls')), path('', redirect_func), ] # project_name/views.py fr..
-
Python | *, **의 의미python 2022. 8. 2. 17:54
*args *args 는 *arguments 의 줄임말로 가변 파라미터를 얘기한다. 함수를 정의하면서 argument가 n개 이상 ( 0개도 포함 ) 들어올 수 있다면 (몇 개가 들어올지 모른다면) 가변 파라미터를 정의하면 된다. `*` 를 이용하여 파라미터명을 정의하면 된다. 일반적으로 *args라고 사용한다. 함수 내부에서 튜플로 묶인다. do_func 파라미터로 4개를 넣었다. 첫 번째 출력 결과를 보면 튜플로 묶여 있는 것을 확인할 수 있고, 이에 sum함수도 실행 가능하다. list로 출력해 줄 수도 있다. * unpacking *는 unpacking의 의미로 사용되기도 한다. do_func(*args) 안의 *args는 가변 파라미터를 정의한 것이고, *lst의 경우가 unpacking이다. ..
-
Python | List Comprehension이 왜 더 빠를까?python 2022. 7. 26. 18:00
오늘 강의를 듣다 List Comprehension이 단순 for loop을 실행하는 것보다 더 빠르다는 것에 대해서 알았다. 이걸 보면서 단순 generator의 차이는 아닐 것이라는 생각이 들어 관련 자료를 좀 더 찾아보게 되었다. 김동우님의 블로그 에서 그 답을 확인할 수 있었다. 이곳에도 링크가 있었지만, 404 에러로 해당 블로그의 링크를 첨부한다. 파이썬에서 List Comprehension이 더 빠른 이유 들어가며 보통 언어를 공부하면 쉽게 사용할 수 있도록 만들어진 문법일수록 실행시간에서 손해보는 경우가 많았습니다. 리스트 컴프리헨션도 일종의 언어 수준의 편의기능으로 생각했기에 당 whatisand.github.io 결론적으로, for loop에서는 append 메소드를 call 하고, L..