본문 바로가기
Python/Web Scraping

[Python] #3.0 Django is AWESOME / #3.1 *args **kwargs (#코딩공부)

by 함께 공부해요 2020. 2. 27.

https://youtu.be/ol3eYQlCaUM


<복습>

https://wook-2124.tistory.com/45

 

[Python] #2.15 Saving to CSV(Comma-separated values) / #2.16 OMG THIS IS AWESOME (#코딩공부)

https://youtu.be/1tGVS0LO2Do <복습> https://wook-2124.tistory.com/44 [Python] #2.14 What is CSV(Comma-separated values) (#코딩공부) https://youtu.be/t2-yu7e7lFM <복습> https://wook-2124.tistory.com/..

wook-2124.tistory.com


<준비물>

https://www.djangoproject.com/

불러오는 중입니다...

https://docs.djangoproject.com/ko/

 

Django 문서 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com


1. Django란 무엇일까?

https://ko.wikipedia.org/wiki/%EC%9E%A5%EA%B3%A0_(%EC%9B%B9_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)

 

장고 (웹 프레임워크) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 장고(Django, FAQ 발음으로는 "쟁고"(IPA: [ˈdʒæŋgoʊ])[2])는 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로, 모델-뷰-컨트롤러(MVC) 패턴을 따르고 있다. 현재는 장고 소프트웨어 재단에 의해 관리되고 있다. 고도의 데이터베이스 기반 웹사이트를 작성하는 데 있어서 수고를 더는 것이 장고의 주된 목표이다. 장고는 콤포넌트의 재사용성(reusability)과 플러그인화 가능성(pluggab

ko.wikipedia.org

https://tutorial.djangogirls.org/ko/django/

 

Django란 무엇인가요 · Django Girls Tutorial

No results matching ""

tutorial.djangogirls.org


Django파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(Web Application Framework)이다. 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크(Web Framework)이다. 즉, 웹 개발에 있어서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있게 해주는 Framework(프레임워크)이다.

 

그럼 Framework(프레임워크)란 무엇일까?

 

먼저 웹사이트를 구축할 때는 비슷한 유형의 요소들이 항상 필요하다. 예를 들어 회원가입, 로그인, 로그아웃과 같이 사용자 인증을 다루는 방법이나 웹사이트의 관리자 패널, 폼, 파일 업로드와 같은 것들 말이다.

 

때문에 오래전에 어떤 웹 개발자들이 새로운 웹 사이트를 개발할 때 서로 비슷한 문제들에 직면한다는 것을 깨닫고, 팀을 조직해서 바로 사용할 수 있는 구성요소들을 갖춘 여러 Framework(프레임워크)를 만들었다. 장고도 그 중에 하나이다. 다시 발명해야 하는 문제로부터 해방감을 주고, 새로운 웹사이트를 개발할 때 뒤따르는 간접비용의 부담을 덜어주는게 Framework(프레임워크)다.

 


2. Django Document

Django는 Documentation(문서) 정리가 정말 잘 되있다. 그리고 한글 번역본까지 있어서 문서만 읽고도 웹사이트를 만들 수 있다.


https://youtu.be/5NI1W3-a8UM


<코드기록>

# *args는 positional arguments를 무제한으로 나타나게 해줌!
# 때문에 이것을 출력하면 a, b에 해당하는 3, 5는 return 되고 
# 뒤에 있는 1, 1, 1이 () tuple로 묶여서 출력됨!
def plus(a, b, *args):
  print(args)
  return a + b

plus(3, 5, 1, 1, 1)


# **kwargs는 keyword arguments를 무제한으로 나타나게 해줌!
# 이것은 {} dictionary로 묶여서 출력됨!
def plus(a, b, *args, **kwargs):
  print(args)
  print(kwargs)
  return a + b

plus(1, 1, 1, 1, 1, hello=True, helloo=True, hellooo=True)


# <계산기 만들기>
# *args를 통해 positional arguments를 무제한으로 나타나게 하고 result = 0 으로 정한뒤, 
# for number(라고명명) in args(무제한 positional argumets를 불러옴)
# 마지막으로 result += number (여기서 +다음 =를 바로 붙여주지 않으면 동작이 안됨)
def plus(*args):
  result = 0
  for number in args:
    result += number
  print(result)

plus(1, 1, 1, 1, 1, 21, 549, 23, 26, 94)

1. *args (positional arguments)

먼저 def plus(a, b)로 a, b 2개의 arguments(인자)를 설정하더라도, print()는 arguments를 무제한으로 넣을 수 있다.

 

그러나 인자를 a, b 2개의 positional arguments(인자)로 설정한 plus() 경우에는 arguments(인자) 2개를 초과하면 TypeError가 뜬다.

 

그러나 plus의 인자인 a, b 뒤에 *args를 입력해주면 plus()에 a, b 이외의 많은 arguments를 쓰더라도 a, b에 해당하는 인자만 return a + b로 return된 후, 그 뒤에 인자들은 그대로 출력이 된다.

 

그러나 *args는 positional arguments에 해당이 되고, keyworded arguments는 또 따로 입력을 해줘야(**kwargs) 오류가 나지않고 plus()로 출력할 수 있다.


2. **kwargs (keyworded arguments)

**kwargs(keyworded arguments)를 입력해주면 역시 마찬가지로 a, b, *args 인자 이외의 keyworded arguments를 무수히 입력할 수 있다.

 

그리고 출력결과를 확인해보면 positional arguments는 () tuple로 묶이고, keyworded aruguments는 {} dictionary로 따로 묶인 것을 알 수 있다.


3. 계산식 만들기

def plus(*args)로 positional arguments를 무제한으로 적을 수 있게 함수를 설정해준다.

 

그 다음으로 처음은 0부터 시작해야되니 result = 0 을 적어주고,  

 

for number(새로운 변수명) in args(무수히 많은 positional argumets를 불러옴)으로 무수히 많이 적은 args안에서 참인 값을 반복적으로 number로 실행하는 for문을 적어줬다.

 

그리고 마지막으로 result(0) += number로 plus()의 값이 0+1, 1+1, 2+1 .. 이런식으로 쭉 연산할 수 있는 식을 세워준다. (여기서 +다음 =를 바로 이어서 붙여주지 않으면 실행이 안된다. 아직까지 그 이유에 대해서는 이해를 못한... ㅠ)


4. 최종 정리

이렇게 Django를 이용하는데 중요한 개념인 *args, **kwargs에 대해 알아봤다. 끝!! :)


※ 신종 코로나 바이러스 조심하세요!!!!

댓글