python
-
conda commandspython/conda 2024. 2. 14. 14:29
miniconda install가이드 문서: https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.htmlubuntu 에 설치하기: https://docs.anaconda.com/free/miniconda/#quick-command-line-install 기본 명령어env 생성 / 삭제conda env listconda init bash # .bashrc 환경 설정conda create -y -n kjm_env conda-pack python=3.8.15conda activate kjm_envconda deactivateconda env remove -n kjm_env env 생성하는 또 다른 방법 -..
-
python MixInpython/응용 2024. 1. 31. 17:07
scala 의 trait mixin 과 비슷한 것 같다. 상속을 통해 공통으로 사용할 member, method 를 클래스에 추가함? 예제 코드 class ToDictMixin: def to_dict(self): return {key: value for key, value in self.__dict__.items()} class MyClass(ToDictMixin, BaseClass): pass 다중 상속일 경우 Q: Under multiple inheritances, if two parent classes have the same methods or attributes, what will happen? A: If two parent classes have the same method or attribu..
-
rustedpy result 소개python/result 2024. 1. 31. 15:34
github: https://github.com/rustedpy/result python Exception 대신에 Result 타입으로 리턴하자. scala 의 Either 와 비슷 dry-python 의 Result 와 비슷 Exception vs Result total function, explicit error check 등을 생각하면 Result 를 사용하는 것이 좋을 듯 한데.. code 가 좀 더 복잡해(어려워) 지고, Exception 사용을 python convention 이라고 생각해 저항이 있는 것 같다. 토론 링크 https://www.reddit.com/r/Python/comments/1897m0y/just_found_a_library_for_ruststyle_errors_in/ h..
-
functools.singledispatch 로 typeclass 흉내 내기python/응용 2024. 1. 24. 18:10
https://docs.python.org/3/library/functools.html#functools.singledispatch https://news.ycombinator.com/item?id=22682219 functools.singledispatch 를 이용해 typeclass 처럼 만들어 보자 코드 import dataclasses import functools import math from typing import Any @dataclasses.dataclass class Circle: radius: float @dataclasses.dataclass class Rectangle: width: float height: float @functools.singledispatch def area(..
-
Coroutine yield 의 동작 이해python/응용 2023. 12. 13. 19:37
동작 yield 는 기본 적으로 다음과 같은 순서로 동작한다. 값을 리턴한다. (즉시) 입력 값을 받기 위해 대기 한다. 최초 next() 나 send(None) 호출로 coroutine 을 시작한다. 처음 만나는 yield 도 위의 설명대로 동작한다. 코드 def simple_coroutine(a): print(f"-> Started: {a=}") b = yield a print(f"-> Received: {b=}") c = yield a + b print(f"-> Received: {c=}") my_coro = simple_coroutine(14) next(my_coro) # -> Started: a=14 # 14 my_coro.send(28) # -> Received: b=28 # 42 my_cor..
-
Dependency Inversion Principlepython/SOLID 2023. 12. 6. 23:41
정의 1. High-level modules should not depend on low-level modules. Both should depend on abstractions. 2. Abstractions should not depend on details. Details should depend on abstractions. 참고: https://www.udemy.com/course/solid-design-principles-with-python
-
Interface Segregation Principlepython/SOLID 2023. 12. 6. 23:20
정의 No client should be forced to depend on methods it does not use 위반코드 from abc import ABC, abstractmethod class Phone(ABC): @abstractmethod def call(self, number): pass @abstractmethod def swipe_to_unlock(self): pass class IPhone(Phone): def call(self, number): print(f"Calling Number: {number} from iPhone") def swipe_to_unlock(self): print("iPhone is unlocked") Phone interface 는 전화(call) 와 잠금 ..