일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pytorch
- clean code
- Vision
- REACT
- FGVC
- 자료구조
- Front
- classification
- Python
- dl
- Meta Learning
- nlp
- Torch
- web
- math
- ML
- computervision
- algorithm
- CV
- cs
- 알고리즘
- 딥러닝
- FineGrained
- SSL
- nerf
- Depth estimation
- 3d
- PRML
- 머신러닝
- GAN
- Today
- Total
목록Python/CLEAN CODE (20)
KalelPark's LAB
Python에서의 일반적으로 자주 활용되는 메소드(Magic Method)인 __str__ 메서드와 __repr__ 메서드의 차이 두 메소드 간에는 미묘한 차이가 있습니다. 따라서 차이점을 명확하게 아는게 좋습니다. 공통점 - 두 메소드는 모두 "객체를 문자열로 반환"한다는 공통점이 존재 아래의 코드를 활용해보면 __repr__ 와 __str__이 겹친다는 것을 알 수 있습니다. import torch import torch.nn as nn class model(nn.Module): def __init__(self): super().__init__() self.linear1 = nn.Linear(10, 100) self.linear2 = nn.Linear(100, 100) self.linear3 = nn..
파이썬 프로그래밍의 상당 부분은 데이터를 포함하는 클래스를 정의하고, 클래스에 속하는 객체들이 서로 상호작용하는 방법을 기술하는 것으로 여겨집니다. 모든 파이썬 클래스는 함수와 attribute를 함께 캡슐화하는 일종의 컨테이너라고 할 수 있습니다. 파이썬은 데이터를 관리할 때 사용할 수 있도록, 리스트, 튜플, 집합, 딕셔너리 등에서 활용됩니다. * FrequencyList를 리스트(list)의 하위 클래스로 만듦으로써, 리스트가 제공하는 모든 표준 함수를 FrequencyList에서도 사용할 수 있습니다. class FrequencyList(list): def __init__(self, members): super().__init__(members) def frequency(self): counts ..
코드에서 값을 관리하는 부분이 점점 복잡해지고 있음을 깨닫는 즉시 해당 기능을 클래스로 분리하는 것이 좋습니다. 이를 통하여, 데이터를 더 잘 캡슐화해주는 정의된 인터페이스를 활용하는 것이 가능합니다. 우선 기초 지식부터 다듬어 보도록 하겠습니다. 인터페이스와 구체적인 구현 사이에 잘 정의된 추상화 계층을 만들 수 있습니다. Tuple : Tuple 자료 구조는 불변한 순서가 있는 객체로 생성하여, 값을 변경할 수 없음 Tuple은 튜플에 있는 요소에 접근할 때, 순서로 기억하기 때문에, 순서로 접근해야 하는 단점이 있음. 그러므로, Namedtuple을 사용하면 더욱 편리해집니다. Namedtuple : Class가 아니고, collections 내 존재합니다. 사용 예시 - 위치 또는 키워드 Argu..
itertools 효율적인 루핑을 위한 이터레이터를 만드는 함수이다. 자체적으로 혹은 조합하여 유용하고 빠르고 메모리 효율적인 도구의 핵심 집합을 표준화합니다. 순수 파이썬에서 간결하고 효율적으로 특수화된 도구를 구성할 수 있도록 이터레이터 대수(iterator algebra)를 형성합니다. chain : 여러 iteration을 하나의 순차적인 이터레이터로 합칠 때 사용합니다. it = itertools.chain([1, 2, 3], [4, 5, 6]) for i in it: print(i) print(list(it)) repeat : 한 값을 게속 반복해 내놓고 싶을 때 사용합니다. it = itertools.repeat("안녕", 3) print(list(it)) cycle : 어떤 이터레이터가 원..
Comparison, Generator Comparison을 사용하면, 타입을 간결하게 이터레이션하면서 원소로부터 파생되는 데이터 구조를 생성할 수 있습니다. Comparison은 Generator로 확장하는 것이 가능합니다. Generator는 성능을 향상시키고, 메모리 사용량을 줄이고, 코드의 가독성을 향상시킬 수 있습니다. list comparision을 사용하는 경우, map과 filter를 사용하는 대신에, list에서 바로 생성하는 것이 좋습니다. alt = map(lambda x : x ** 2, a) # don't use even_square = [x ** 2 for x in a if x % 2 == 0] # using list comparison print(even_sqaure) Sequ..
Dictionary - 일반적으로, Dictionary의 원소 삽입 순서와 iteration 순서는 일치하지 않는다. 이러한 일이 발생하는 이유는, Dictionary의 구현이 내장 hash와 난수 씨앗값(seed)을 사용하는 해시 테이블 알고리즘이기 때문이다. - 만약 dictionary를 순서에 의존하고 싶다면, 아래와 같은 명령어를 사용하면 됩니다. baby_names = { "cat" : "kitten", "dog" : "puppy" } print(baby_names.keys()) print(baby_names.values()) print(baby_names.items()) print(baby_names.popitem()) 기존 방법에서는, dictionary에서 값을 불러올 때, 순서대로 불러오..
Packing & Unpacking Packing : 인자로 받은 여러개의 값을 하나의 객체로 합쳐서 받을 수 있도록 합니다. tuple은 *를 사용하여, 나타냅니다. 반면에 **의 경우, dictionary로써 사용됩니다. def func(*args): print(args) print(type(args)) // func(1, 2, 3, 4, 5, 6, 'a', 'b') // result // (1, 2, 3, 4, 5, 6, 'a', 'b') // def kwpacking(**kwargs): print(kwargs) print(type(kwargs) // kwpacking(a=1, b=2, c=3) // result // {'a': 1, 'b': 2, 'c': 3} // Unpacking : 함수를 호..
PEP(Python Enhancement Proposal) 8이란? - Python 코드를 어떤 형식으로 작성할지 알려주는 가이드라인이다. * 파이썬 커뮤니티에서 자주 활용되는 방안이기에, 참조하시기 바랍니다. https://peps.python.org/pep-0008/ PEP 8 – Style Guide for Python Code | peps.python.org PEP 8 – Style Guide for Python Code Author: Guido van Rossum , Barry Warsaw , Nick Coghlan Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013 Table of Con..