Today I Learned | 7월 9일 args & kwargs, DevTools, class

juri·2021년 7월 9일
0

TIL

목록 보기
9/25

# 오늘 뭐했지

1 python replit 55-58
2 session <개발자 도구>
3 python replit QnA


1. python replit 55-58

뒤로 갈수록 어려워지는 replit.. 드디어 끝냈다 !

클래스

클래스는 간단히 말하면 함수를 모아놓은 것이다. 다른 고수들이 만들어놓은 클래스를 가져다가 사용하면 고수의 밥상에 내 수저를 살짝 얹을 수 있다.
클래스를 직접 만들어보는 과제가 있었는데 클래스에 관련된 개념들이 아직 익숙치 않아서 한참 헤맸다.

클래스와 객체

class Database :
    ...생략

db1 = Database()
db2 = Database()

Database가 클래스라고 가정하면 db는 Database의 객체가 된다. 이해하기 쉽도록 비유한 다른 분의 표현을 인용하면, 클래스는 쿠키틀 , 객체는 쿠키틀로 만든 쿠키 로 생각할 수 있다. 즉, 클래스가 서로 다른 객체를 만드는 것이다. db1과 db2는 같은 클래스로 만들었지만 전혀 다른 곳에 데이터를 저장하며 서로 영향을 주지 않는다.
클래스로 만든 객체를 인스턴스라고도 하는데 특정 객체와 클래스의 관계를 말할 때 사용한다. 예를 들어, db1은 객체, db1은 Database의 인스턴스 라고 말한다.

class Database():
    def __init__(self, name, value) :
        self.name = name
        self.value = value
    
    #클래스 메서드 정의
    def insert(self, field, value)
        self.field
        코드..

클래스를 선언할 때 초기값을 설정해야 할 필요가 있을 수도 있다. 그럴 땐 객체가 생성될 때 자동으로 호출되는 메서드인 생성자를 사용한다.(생성자는 __init__라고 쓰면 된다.) 변수 self 의 자리엔 객체가 자동으로 입력된다.
그 아래로 메서드를 정의할 때, 새로운 parameter가 등장하면 함수안에서 self.___의 형태로 선언해준다. 그제서야 비로소 클래스 안에서 사용가능하다. 또한, 다른 메서드를 정의할 때 선언한 self.___형태의 변수를 그대로 다른 메서드를 정의할 때도 사용할 수 있다.

사전스터디할 때 혼자 장고를 해보면서 클래스의 개념이 도무지 이해가 안됐는데 이렇게 하나씩 알음알음 하다보니 살짝 이해가 된다. 낯선 개념이라서 그렇지 계속 접하다보면 금방 익숙해질 것 같다 !
결국에 클래스 정의하는 것도 파이썬 코드짜는 것과 비슷하기 때문에 연습이 좀 필요하긴 할 것 같지만 ^^;

import module , package

한참을 헤매고 여기저기 물어보고 다닌 결과 이해한 import 개념 ^^
정말 백엔드는 추상적이긴 하다 . 눈에 안보이니까 이해할 때 상상의 나래를 펼쳐야한다 하하하

python replit 43-58 링크

2. session <개발자 도구>

개발자 도구는 사전스터디 때 자기소개 홈페이지 만들면서 지겨울 정도로 많이 봤던 그 ... F12 .. (애증)

리눅스에서 웹 브라우저로 파이어폭스를 사용하고 있어서 크롬 개발자도구와 다르게 생기긴 했는데 대충 비슷해서 어렵지 않게 이해함 . 많은 패널이 있는데 그 중에서 제일 중요한 네 개의 패널만 뽑아 정리하고 서로 설명해보는 시간을 가졌다.

2-1. Elements

  • 웹 페이지 구성과 구성 요소들의 스타일을 확인할 수 있다.
  • user agent stylesheet : 브라우저에서 제공하는 기본 스타일 값
    css reset을 통해 브라우저 별로 다른 화면을 동일하게 출력할 수 있다.
  • 에러를 출력하지 않는 css 특성 상 변경사항을 브라우저에서 바로 확인하기 용이하다.

2-2. Console

  • 자바스크립트 코드를 브라우저에서 즉시 실행할 수 있다.

2-3. Network

  • 네트워크 상에서 주고받는 데이터를 확인할 수 있다.
  • http 통신 현황을 확인, status code를 보고 문제가 생긴 위치를 확인할 수 있다.
  • 홈페이지를 로드한 뒤 네트워크 패널을 보는 게 아니라 네트워크 패널을 보면서 홈페이지를 리로드한다.
  • No throtting으로 인터넷이 느린 환경에서 시뮬레이션을 해볼 수 있다.

2-4. Application

  • 브라우저의 저장소에 담긴 데이터를 확인할 수 있다.
  • 쿠키, 로컬스토리지, 세션스토리지가 있다.

개발자로 일하면서 개발자 도구까지 공부할 시간이 있을까 싶다. 미리 공부하니까 넘 좋다.

3. python replit QnA

Q. argskwargs는 각각 다른 type의 argument를 받는가?
A. Yes. args는 non-keyword 인자만, kwargs는 keyword인자만을 받는다. 그렇기때문에 인자로 어떤 type이 들어올 지 모르기때문에 모든 type의 인자를 받기 위해 두 변수 모두를 쓸 때가 있는 것이다.

Q. 함수 내에서 필요한 인자보다 많은 인자가 입력되면 어떤 결과가 나오는가?
함수 내에서 사용할 변수 이상의 인자가 들어오면 무시된다.

def test(*args, **kwargs) :
    print(args[0] + args[1])
    
test(1,2,a=1,b=2)

함수 내에서 필요한 변수는 args[0]args[1]이므로 입력되는 인자 중에서 12가 필요하다. 필요없는 인자인 a=1b=2는 무시된다.

def test(*args) :
    print(args[0] + args[1])
    
test(1,2,a=1,b=2)    

위와 같이 필요없는 인수라고 parameter에 지정하지 않고 아예 안 받아버리면 오류가 생기니까 일단 받아는(?)주고 무시한다.


하루 끝!

오늘 목표였던 python replit 끝내기 성공 ~ ! 골머리 앓았던 class와 import 그리고 매개변수들까지 다 해결해서 후련하다. 이렇게 위코드에서의 첫번째 주를 마무리합니다 . . 다음주부터 장고배운다는데 너무 설렌다 . . ! 사전스터디 때 했던 것들중에서 장고가 제일 재밌었고 뭔가 진짜 코딩하는 기분(?)이었다고 해야될까 . . 물론 복잡하고 어렵겠지만 으쌰으쌰 힘내보자

profile
Make my day !

0개의 댓글