일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리
- Open API
- 알고리즘
- jdbc
- 튜플
- pycon
- Python
- Tistory
- 가사 검색
- 징검다리 건너기
- 티스토리 open api
- 트라이
- bulk update
- 카카오 인턴
- 호텔 방 배정
- Spring Boot
- 크레인 인형뽑기 게임
- 프로그래머스
- 트라이 #trie #알고리즘
- trie
- 보행자 천국
- 불량 사용자
- CleanCode
- Today
- Total
목록python (14)
택시짱의 개발 노트
시작전에 메인 루틴과 서브 루틴이란 ? 메인 루틴에서 서브 루틴을 호출하면 서브 루틴의 코드를 실행 한 뒤 다시 메인 루틴으로 돌아와 남은 작업을 진행한다. 서브 루틴의 작업이 끝나게되면 서브 루틴의 내용은 모두 사라진다. 서브 루틴은 메인 루틴안에 속하기 때문에 종속된 관계를 가진다. def mul(a, b): # mul 함수가 끝나면 변수와 계산식은 사라진다 c = a * b print(f'{c} - mul 함수') return c def main(): # mul 함수가 끝나면 다시 calc 함수로 돌아온다 result = mul(1, 4) print(f'{result} - calc 함수') main() >>> 4 - mul 함수 >>> 4 - calc 함수 # main가 main 루틴(main ro..
mro 란? method resolution order로 메서드 결정 순서이다. ( 자식과 부모 클래스를 전부 포함하여 메서드의 실행 순서를 지정하는 것) 왜 mro라는게 있을까? python은 기본적으로 다중 상속을 지원한다. 상속받은 부모 클래스가 서로 겹치지 않은 메서드 네임을 가지고 있다면 자식 클래스에서 부모 클래스의 메서드를 사용할때 딱히 문제가 되지 않는데 BUT 부모 클래스가 가지고 있는 메서드의 이름이 모두 같다면 자식 클래스는 어떤 부모 클래스의 메서드를 불러와야할까?? 아래의 같은 경우에는 어떻게 해야 될까..?? 정답은 자식에서 상속 받기 위해 작성한 부모 클래스의 순서에 있다. (왼쪽에서 오른쪽으로) class A: def name(self): print('A') class B: ..
결론 : decorator의 호출 순서는 아래에서 위로! django rest framwork에서 decorators method를 이용하여 view를 작성하고 있었다.이때 permission_classes, api_view decorator를 같이 사용하고 싶었고 나는 api_view -> permission_classes 순서로 호출되길 원했다. 이때 파이썬 코드는 절차적으로 진행 되니까 아래 코드 처럼 api_view를 위에, permission_classes를 그 다음으로 작성하니Server Error가 뜨는 것이다..# decorators의 순서가 올바르지 않음@decorators.api_view(http_method_names=['POST'])@decorators.permission_class..
classmethod classmethod는 instance에 독립적이다 classmethod는 instance에서도 실행이 되고 class 자체에서도 실행 가능 instance마다 값이 변하지 않음 class에 종속적 이다 classmethod는 클래스를 통해 호출 할 수있다. 그래서 클래스에 종속적 이다. classmethod는 클래스 변수에 접근(변경)이 가능하다. python에서 help(classmethod)를 입력시 class classmethod(object) | classmethod(function) -> method | | Convert a function to be a class method. | | A class method receives the class as implicit fi..
아래의 글은 PyCon을 참고 하였습니다. !https://www.youtube.com/watch?v=S5SY2pkmOy0&t=382s 잠깐, 테스트 코드 작성이 정말 필요한가요? 생각보다 실제 환경에서 동작하는 코드는 복잡하다. 하나의 가장 적은 단위의 코드를 추가하거나 수정했다고 가정한다. 만약 그 코드가 문제가 있으면 그건 정말로 큰 부작용(Side-Effect)를 발생시킨다. 특정 조건에서만 발생하는 버그로 인해, 일부는 동작하고 일부는 동작하지 않는다면 사람이 검수로 버그를 발견하기도 힘들어진다. 이렇게 되면 코드 하나를 추가하는 것이 두려워지고 신뢰할 수 없게 된다. 테스트 코드는 이런 기능 추가와 수정이 발생할 때 발생할 수 있는 사이드 이펙트 탐지를 돕고 코드를 신뢰할 수 잏게 만들어준다...
아래의 글은 PyCon korea의 영상을 참고 하여 작성 하였습니다. https://www.youtube.com/watch?v=S5SY2pkmOy0&t=382s 깨진 유리창 이론 만약 한 건물의 유리창이 깨진채로 방치되어 있다면 머지 않아 그 건물의 다른 유리창도 깨질 것이다. 만약 문제가 그대로 방치되어 있다면 머지 않아 돌이킬 수 없는 문제를 야기할 수 있다. 보이스카우트 규칙 (Boy Scout Rule) 깨진 유리창 이론을 막기 위함 언제나 처음 왔을 때보다 깨끗하게 해놓고 캠프장을 떠날 것 클린 코드의 원칙 가드 클러즈 (GuardClause) 가드 클러즈 (GuardClauses)는 여러분의 인덴트(Indent)를 줄여줍니다. Before Refactoring def example(): us..
Generator Generator란? Generator(제네레이터)는 제네레이터 함수가 호출될 때 반환되는 iterator(이터레이터)의 일종이다. 제네레이터 함수는 일반적인 함수와 비슷하게 생겼지만 yield 구문을 사용해 데이터를 원하는 시점에 반환하고 처리를 다시 시작할 수 있다. 일반적인 함수는 진입점이 하나라면 제네레이터는 진입점이 여러개라고 생각할 수 있다. 이러한 특성때문에 제네레이터를 사용하면 원하는 시점에 원하는 데이터를 받을 수 있게된다. 동작 방법 yield 문이 포함된 제네레이터 함수를 실행하면 제네레이터 객체가 반환되는데 이 때는 함수의 내용이 실행되지 않는다. next()라는 빌트인 메서드를 통해 제네레이터를 실행시킬 수 있으며 __next()__ 메서드 내부적으로 iterat..
class TrieNode: def __init__(self): self.word = False self.children = dict() class Trie: def __init__(self): self.root = TrieNode() def insert(self,word : str) -> None: node = self.root for char in word: if char not in node.children: node.children[char] = TrieNode() node = node.children[char] node.word= True def search(self,word : str)-> bool: node = self.root for char in word: if char not in no..