[Function] 순수 함수
·
코딩/노트
`순수함수(pure function)`는 부작용(side-effect)이 없는 함수로, 함수 외부의 상태에 영향을 끼치지 않는 함수를 의미합니다. 구체적으로는 입력이 같으면 출력도 항상 같아야합니다. 예를들어, 아래는 리스트에 새로운 원소를 추가하는 함수입니다.def add_item(lst, item): lst.append(item) return lstmy_list = [1, 2, 3]add_item(my_list, 4)my_list>>> [1, 2, 3, 4]이 경우에는 함수 외부의 변수가 mutate됩니다. 순수하지 못한 함수죠. 이런 경우 원치 않는 부작용(side-effect)이 있다고 할 수 있습니다. def add_item_pure(lst, item): return lst + ..
[Python] Pickle
·
코딩/노트
Pickle`Python`으로 작업을 하다보면, 종종 저장하기 애매한 `object`가 있습니다. 예를들어, 딕셔너리 정보를 저장하려 할 때, 데이터프레임으로 바꾸어 `.csv`로 저장해야 할 때가 그렇습니다. 이때 주로 사용하는 저장 방식이 `Pickle` 입니다. 이 모듈을 사용하면 특정 자료를 객체 구조 그대로 유지하며 저장 및 불러오기가 가능합니다.  저장하는 과정을 `pickling`(또는 `serialization`, `marshalling` ...), 반대로 불러오는 과정을 `unpickling`이라고 합니다. 저장 과정이 `seialization` 직렬화 라고 불리는 이유는 오브젝트의 정보를 `Byte Stream`(정보를 연속적인 `0`과 `1`로 이진화 시켜 저장)으로 저장하기 때문입니..
[Linux] rm
·
코딩/노트
리눅스에서 데이터를 지울때 주로 사용하는 명령어 입니다. 초기에 유닉스 시스템이 개발되면서 생긴 여러 명령어 중 기본 명령어로, 당시 소형화되고 효율적인 명령어를 만들고자하는 개발자들의 철학으로 remove가 `rm`으로 축약되어 사용되고 있습니다.옵션`rm`과 자주 사용되는 옵션을 알아보겠습니다.-r (Recursive)`-r`은 디렉터리와 그 안의 모든 파일과 하위 디렉터리를 재귀적으로 삭제할 때 사용합니다. 이 옵션이 없으면 rm은 기본적으로 파일만 삭제할 수 있습니다.rm -r directory_name/-f (Force):`-f`는 강제 삭제를 의미합니다. 사용자에게 삭제 여부를 묻지 않고 바로 삭제하며, 삭제할 파일이 없더라도 오류 메시지를 출력하지 않습니다. 예를 들어, `rm -rf dir..
[Bash] 다중 스크립트 실행
·
코딩/노트
종종 조건을 다르게하여 모델을 학습시켜 비교할 때에, 생각하기 귀찮아서 터미널을 일일히 열어 모든 경우의 스크립트를 실행시켰습니다. 그러다 Bash를 사용하여 조건을 조정하여 (args) 여러 스크립트를 한번에 실행해보니 훨씬 편하더군요. 가령, 아래와 같은 스크립트를 실행한다 합시다. 스크립트를 실행하기 위한 파라미터가 `fusion, feature, is_decay, device` 총 4개라고 할 때에, 각각의 조건이 ` fusion = [1, 2, 3, 4] `, ` feature = [1, 2, 3] `, ` is_decay = [0, 1] ` 그리고 ` device = [0, 1, 2, 3]`로 경우 총 경우의 수는 $4 \times 3 \times 2 = 24$ 가 됩니다 (device는 가용..
[Python] Type Hint
·
코딩/노트
동적 타이핑파이썬은 동적 타이핑(dynamic typing) 언어로, 변수나 함수의 타입을 명시적으로 지정할 필요가 없다는 점이 큰 특징입니다. 그러나 대규모 프로젝트나 협업 환경에서는 코드의 가독성과 유지보수를 위해 변수와 함수의 타입을 명확히 하는 것이 중요해집니다. 이를 위해 파이썬 특정 버젼 (>3.5)부터 도입된 타이핑 모듈과 타입 힌트 기능이 유용하게 사용 가능합니다.Typing Module파이썬의 typing 모듈은 타입 힌트를 작성하기 위해 필요한 여러 타입 클래스를 제공합니다. 이 모듈을 사용하면 변수, 함수 인자, 반환 값 등에 대한 타입을 명확하게 지정할 수 있습니다.기본 타입들: `int`, `float`, `str`, `bool` 등 기본 타입들을 사용할 수 있습니다.컬렉션 타입들..