![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dkhgn3/btrHpdE5HY1/ZaZAqZD6Y5bvIUZcOU3vZk/img.png)
Reference HTTP완벽 가이드 나무위키 mdn web docs_ 인터넷이라는 정보의 바다는 우리의 현실세계와 비슷하다. 마치 우리가 간단한 생활용품을 살 때 다이소에 가듯이 인터넷에서는 우리가 특정한 정보를 찾거나 무언가를 하기 위해 특정한 사이트에 방문한다. 하지만 현실세계든 인터넷이든 어딘가를 방문하려면 그곳의 주소를 알아야 하지 않겠는가? 그리고 주소를 알았다고 하더라도 현실세계에서는 우리가 직접 가야 하지만 인터넷에서는 당신이 직접 갈 필요 없다. 컴퓨터를 통해 인터넷 안에 존재하는 독립적인 당신의 객체를 조종하면 된다. 간단한 예시를 들자면 만약 필자가 책을 사야 하는 상황이라면 브라우저 주소창에 알라딘 URL(주소)를 입력하면 된다. 알라딘 사이트의 URL(주소)를 입력하고 엔터를 누르..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/kV234/btrG3jxAnAM/y15Qu9jbi6KAd3ZhlT1QNk/img.jpg)
Reference Fluent Python 함수 안에 yield키워드가 있다면 그 함수는 제너레이터 함수다. def generator(): print('My Favorite Food is') yield 'Chicken' print('My Hobby is') yield 'Watching England Premier League' generator() 함수를 호출하면 제너레이터 객체를 생성하고 호출자가 제너레이터 객체의 흐름을 제어할 수 있다. 호출자가 next()함수를 호출하면 제너레이터 객체는 값을 '생산'하고 그 값을 호출자에게 전달한다. (★호출자가 제너레이터객체로부터 값을 꺼내오는 형식★) 그리고 다음 yield구문까지 함수를 진행하며 다음 yield구문에 도착했을때 호출자의 next() 함수를 ..
2022년 7월 6일 수요일 아산병원에 갔다. 원래는 8월 초에 약속되어 있었지만 몸 상태가 딱히 좋지 않아 한 달 앞당겼다. 3개월 전에 갔을 때 대장조영술 결과를 보고 이미 대장과 소장이 연결된 부분이 협착이 진행되어 협착 부분을 절제하는 수술을 해야 하는 상태라고 말씀하셨다. 근데 당시에는 내가 통증이 별로 없다고 판단했고 수술을 보류했다. 그 이후 3개월이 지옥 같았다. 엄청나게 아파서 지금 당장 병원에 가야 할 통증은 아니었지만 인간에게 가장 중요한 먹고 싸고 자는 게 잘 안됐다. 말려 죽이는 느낌이 들었다. 이렇게 고통받기보단 그냥 수술을 하는 게 좋다고 판단했다. 그래서 외래를 한 달 앞당겼던 것이다. 나는 이미 수술 날짜를 잡는 것까지 생각하고 갔지만 담당 교수님은 조금 태연했던 거 같다...
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cRwWih/btrGq0xY213/DT5gnvherXoVZBl1v8Rf6K/img.png)
Reference Fluent Python neillmorgan.wordpress.com ※참고로 클로저를 모른다면 데코레이터에 대해 이해하기 어렵다. 소개팅 def blind_date(name): print(f"Hello My Name is {name}!") 필자는 안타깝게도 실제로 소개팅을 한 번도 해본 적은 없지만 만약 소개팅을 하게 된다면 먼저 자신의 이름을 상대방에게 말해줄 것이다. 근데 생각해보니 만나자마자 나의 이름을 말하는 것보단 악수를 먼저 하는게 좋다고 생각했다. 그래서 함수를 조금 수정해서 def blind_date(name): print("handshake") print(f"Hello My Name is {name}!") 악수를 먼저 하고 나의 이름을 말하는 구조로 코딩했다. 근데 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Dr0OB/btrFzPlxw7V/HdwFWwBqT3JPOkoDxrzF50/img.jpg)
Reference Fluent Python docs.python.org Stackoverflow Wikipedia Interface 객체지향 프로그래밍에서 인터페이스는 객체가 "X"라는 타입이 되기 위해 꼭 가져야 할 메서드들의 집합이다. 사례를 통해 인터페이스에 대해 알아가 보자 간단하게 Bike를 생각해보자 Bike가 되기 위해 꼭 있어야 할게 무엇인가? 일단 움직이기 위해 바퀴가 있어야 하고 움직일 줄 알아야 하며 멈출 줄도 알아야 한다. 이런 부분들은 정말 Bike에게 필수적인 부분들이다. 만약 저 세개중에 하나라도 없다면 그게 Bike라고 할 수 있을까? 인터페이스의 목적은 위 사례를 보았듯이 만약 "Bike"라는 타입이 있으면 그 타입이 되기 위한 객체들에게 꼭 필요한 속성들을 강제하고 특정 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dBv6lJ/btrFzEKE8CY/Dn9Q2mKtKImkRIdEeMRPA0/img.png)
Reference Fluent Python docs.python.org Stackoverflow geeksforgeeks for구문의 동작원리? 이터레이터와 이터러블에 대해 알기 전에 우리에게 너무나도 익숙한 코드 한 줄을 봐보겠다. number = {'one': 1, 'two': 2, 'three': 3} for i in number: print(i) 이런 간단한 반복문 실행 결과는 파이썬을 조금이라도 배운 사람들에겐 누워서 떡먹기다. 예상대로 number 딕셔너리의 키값들이 콘솔에 출력된다. 그런데 호기심이 많은 필자에게 매번 for구문은 마법처럼 느껴졌다. 어떤 값이 출력되는지는 알지만 어떻게 동작하는지는 정확히 알지 못했다. 그냥 for구문 문법대로 쓰면 for구문이 알아서 해당 객체의 값을 반복..