본문 바로가기

분류 전체보기154

Model Bakery 사용 시 주의점 Django application 테스트 시 Django Model에 대한 Test fixture를 일일이 만들기 번거로울 때 주로 Model Bakery를 사용하여 model fixture를 만든다. 이 포스팅은 Model Bakery를 사용하면서 부딪힌 겪은 문제를 통해 알게 된 것들을 정리한 것이다. (포스팅에 나오는 코드는 여기에서 확인 가능하다.) 다음과 같은 단순한 형태의 Board, Reply Django model을 기반으로 진행하도록 하겠다. from django.db import models as m class Board(m.Model): content = m.CharField(null=False, max_length=100) class Reply(m.Model): board = m.F.. 2020. 12. 28.
== 와 is 비교 값이 같은지를 확인할 때 == 를 주로 사용한다. 그리고 값이 None 인지를 확인할 때는 is 를 사용한다. 그럼 == 와 is 의 차이는 무엇일까? == : value equality, 값이 같은지를 확인한다. is : reference equality, 참조가 같은지를 확인한다. l1 = [] l2 = [] print(l1 == l2) # True print(l1 is l2) # False 위 결과 l1 == l2 는 True이고 l1 is l2 는 False이다. 리스트를 선언하여 변수에 할당할 때, 새로운 list object가 생성되어 변수에 할당되기 때문에 l1과 l2는 서로 다른 list object를 참조하게된다. 그렇기 때문에 l1, l2 모두 빈 list이기 때문에 값은 같지만 (==.. 2020. 12. 28.
function의 default parameter 사용 시 주의점 파이썬은 함수를 정의할 때 default parameter(기본값)을 같이 정의할 수 있다. 편리한 기능이지만 아래와 같이 list나 dictionary와 같은 object를 사용할 경우 버그가 날 확률이 높다. (물론 의도적이라면 예외이다.) def list_func(li=[]): li.append('test') print('li:', li) print('#############') list_func() # li: ['test'] list_func() # li: ['test', 'test'] list_func() # li: ['test', 'test', 'test'] list_func() # li: ['test', 'test', 'test', 'test'] 아무 parameter도 전달하지 않았을 경우.. 2020. 12. 28.
*args, **kwargs에 대해서 우선 _args와 *_kwargs에 대해 알아보기 전에, python에는 Packing과 Unpacking이라는 것이 있다. Packing 여러개의 데이터를 list, tuple 등의 컬렉션으로 감싸는 것 (묶는 것) greetings = ('hello', 'konnichiwa', 'annyneong',) Unpacking 컬렉션의 element들을 여러 변수에 푸는 것 en, jp, ko = greetings 이제 함수를 보자 def args_func(*args): print(args) print(type(args)) # args_func(1, 2, 3) # (1, 2, 3) args_func((1, 2, 3)) # ((1, 2, 3),) # (1, 2, 3) 이 tuple의 element로 들어간다... 2020. 12. 28.