티스토리 뷰

Table of contents

0. Introduction

1. My codes & The way of more effective coding

2. Conclusion

3. References

 

Introduction

파이썬 외장 라이브러리 중 request의 기능을 공부하는 차원에서 URLs Checker를 구현해 보았다. 사용자에게 url을 입력받아 각 url이 유효한지 유효하지 않은지 판별할 수 있는 코드를 짰다. 이 과정에서 효율적인 코드에 대해서 생각을 해 보게 되었고, 사용자 정의 함수(function)의 유용성에 대한 이해도를 높일 수 있었다. 내가 짠 코드를 보면서 코드를 왜 이렇게 짰는지를 설명해 보고, 더욱 효율적인 코딩을 하는 방법에 대한 인사이트를 탐구해 보겠다.

 

My codes & The way of more effective coding

작성한 코드 중에서 개선을 통하여 더욱 효율적인 코드로 업그레이드할 수 있는 코드 블럭을 두고 내용을 전개해 보겠다. 먼저, 사용자가 입력한 URL의 형태가 온전하지 않은 경우를 처리하는 코드이다.

 

우선, String으로 입력받은 URL 사이의 공백을 제거해주고 대문자로 입력받은 경우가 있다면 소문자로 변환되게 처리하였다. 그리고, 콤마(,)를 기준으로 각각 URL을 분리하여 리스트의 인자가 되도록 한다. 입력받은 URL을 이렇게 처리해 준 후, http:// 유무를 체크하여 미입력 했다면 추가해준다. 이 작업은 for문과 if~else문을 사용하여 리스트의 요소 중 해당 조건을 만족하지 않는 값에는 http://를 붙여준다. 이렇게 작업한 값들을 담을 빈 리스트를 준비하여 담아주면 온전한 URL을 담은 리스트가 준비된다.

 

나는 이 작업 시, replace 함수를 사용하여 String 끼리의 연산을 통해 온전한 URL을 반환하도록 했는데, 더 간단하게 작성할 수 있는 방법이 있었다. f'{}' 형식을 사용하면 코드의 가독성이 더 좋아진다. 그런데, 실행 속도 측면에서는 별 차이가 없는 듯하다. 실행 속도를 측정해 보니 매번 조금씩 시간이 다르게 나오는데, replace를 사용한 경우와 f'{}'를 사용한 경우 시간 차이가 미미하다. 어느 경우가 더 좋은 코드 작성법일까 의문이 생겨, 실행 속도 측정을 해 보니 별 차이가 없었다. 구글링을 해 보니 str + str 연산을 사용하지 말고 f'{}' 형식을 사용하는 것이 더 효율적인 코드 작성법이라고 한다.

 

 

다음은, URL의 정상, 비정상 여부를 체크하는 코드이다. 

 

requests 라이브러리를 이용하여 URL의 상태 코드(status_code)를 반환받는다. 이 코드가 200이면 활성화 상태이고, 그렇지 않으면 비활성화 상태이다. 따라서, for문을 사용하여 list의 각 요소를 체크해 주는데, if~else문을 사용하여 코드가 200이면 'url is ON!'을 출력하고, 그렇지 않으면 'url is OFF!'를 출력하도록 하였다. 그리고, 해당 URL이 존재하지 않는 주소일 경우를 고려하여 try~except문을 사용하여 존재하지 않는 URL일 경우에도 'url is OFF!'를 출력하도록 했다.

 

이 경우에는 request를 반환하는 함수를 따로 작성하지 않고 ON or OFF를 출력하는 함수에 함께 작성하면 코드의 분량을 줄일 수 있다. 이번에도 어느 것이 더 좋은 방법일까 생각해 보았다. 실행 속도 측면에서는 역시 별 차이가 없었다.

 

메모리 측정을 해 보았다.

 

사용자 정의 함수를 만들어두고 호출하는 경우에는 메모리 사용 편차가 크고, 바로 라이브러리를 호출하는 경우에는 메모리 사용 편차가 작았다. 메모리 사용량은 전자가 더 적게 나오는 경우가 많았지만 편차가 큰 것으로 봐서, 안정성 측면에서 영향을 주고 있는 것인가 하는 생각이 들었다.

 

Conclusion

쉬운 문제라도 뭔가 복잡한 코드가 필요할 것이라는 생각에 복잡하게 짜 보려고 했다가 결국은 쉽게 짠 코드가 정답인 경우를 경험하면서, 이번 코드 작성은 어렵게 생각하지 않고 쉽게 짜 보려고 했다. 노마드코더의 니콜라스가 코드를 짜는 것을 보니 일단 쭉 써 내려갔다가 더 보기 좋게 정리하고 바꾸는 방식으로 개선해 나가더라. 좋은 사례를 많이 접하면서 경험치를 늘려나가면 좋은 코드를 작성하게 될 것이다.

 

References

psutil library https://psutil.readthedocs.io/en/latest/

노마드코더 https://nomadcoders.co/

댓글
최근에 올라온 글
페이지 이동 안내

보던 글 목록 : 브라우저 뒤로 가기 메인 화면 : 좌측 상단 아이콘
🍍 The GOAL: AI expert에 가까워지는 중

🍍 I am becoming AI expert who can develop cool things by coding.