Coding/Python 25

[Python] getattr, setattr, hasattr, delattr 함수 사용법 정리

이번에는 클래스의 attribution(속성)에 접근하고, 수정하는 데 사용되는 내장함수에 대해 소개하려고 합니다. 왜 사용하는가 이 함수들을 통해 객체의 속성을 동적으로 조작할 때 유용하게 사용합니다. 특히 객체 지향 프로그래밍에서 이러한 기능은 유연성을 제공하여 동적으로 수정하는데 매우 큰 도움이 되는 함수들입니다. getattr getattr 함수는 객체의 특정 속성 값을 가져옵니다. 만약 그 속성이 존재하지 않을 경우 선택적으로 기본값(default)을 반환할 수 있습니다. # 사용법 getattr(object, name[, default]) 속성이 존재하는 경우 class Person: def __init__(self, name, age): self.name = name self.age = ag..

Coding/Python 2024.01.18

[Python] assert, 가정 설정문 사용법 정리

이번 포스팅에서는 디버깅에 자주 사용되는 가정 설정문(assert)에 대해 작성해보려고 합니다. assert는 왜 사용하는가? 가정 설정문(assert)은 파이썬에서 디버깅을 목적으로 사용되는 구문입니다. 이는 프로그램이 특정한 조건을 만족하는지 확인하며, 그렇지 않을 경우 프로그램을 중단시키며 오류 메시지를 출력합니다. 이때 오류 메시지는 직접 설정할 수 있습니다. 주로 코드가 잘 작동하는지 검증하거나, 개발 과정에서 오류를 발견하기 위해 사용됩니다. assert문 기본적인 형식 assert 조건, 오류 메세지 조건 : 검사하고자 하는 조건, 조건이 True인 경우, 아무 일도 일어나지 않고 코드는 진행됩니다. 오류 메세지 : 조건이 False인 경우, 표시될 메시지입니다. 이 메시지는 작성할 수 있으..

Coding/Python 2024.01.17

[Python] Jupyter Notebook 가상환경 커널 추가 및 삭제

이번에는 Jupyter Notebook에 가상환경을 추가하고 삭제하는 방법에 대해 소개해드리겠습니다. Jupyter Notebook에서 다음과 같이 Terminal창에 접속합니다. 가상환경 생성 python -m venv myvenv python3 또는 python을 이용하며 myvenv(가상환경)을 생성합니다. 가상환경 활성화 source myvenv/bin/activate Linux환경에서 다음과 같은 명령어를 통해 myvenv(가상환경)을 실행합니다. ipykernel 설치 pip install ipykernel 커널을 추가하기 위해 ipykernel을 설치합니다. 커널 추가하기 python -m ipykernel install --user --name=myvenv myvenv를 ipykernel을..

Coding/Python 2024.01.11

[Python] *args 와 **kwargs의 차이

이번 포스팅은 함수의 매개변수에서 입력받는 *args와 **kwargs에 대해 알아보겠습니다. 아마 인공지능이나 여러 코드를 보면 다음과 같은 코드를 마주칠 일이 있을 겁니다. def args_and_kwargs(*args, **kwargs): 다음과 같이 *와 **로 인자를 받는 함수를 보셨을 겁니다. 이 함수의 차이에 대해서 설명해 드리겠습니다. *args 가변 위치 인자(Variable Positional Arguments) * args는 함수에 가변적인 개수의 비키워드 인자를 전달할 때 사용 인자들을 튜플의 형태로 입력을 받음 함수를 정의하면서 비키워드 인자의 수를 모를 때 사용 위의 말이 어렵다면 예시를 통해 설명해 드리겠습니다. def print_args(*args): print(type(ar..

Coding/Python 2024.01.03

[Python] 문자열 템플릿(string Template)

파이썬에서 유용한 string의 Template 라이브러리에 대해 소개하고자 합니다. 파이썬을 조금이라도 다뤄보신 분이라면 문자열 포매팅이 얼마나 자주 사용되는지 아실 텐데요, string.Template는 이러한 문자열 포매팅을 더 안전하고 명확하게 해주는 훌륭한 도구입니다. 그중에서 함수 subtitute에 대해 소개해드리려고 합니다. 선언 방법 from string import Template template = Template(str) # Template에 추가할 문자열 대체할 문자열 표시하는 방법 첫번째 방법 : $ 와 공백을 사용하여 표시 from string import Template text = "Hello, my name is $name and my hobby is $hobby" # n..

Coding/Python 2023.12.30

[Python] 가상환경 생성과 삭제, 활성화 및 비활성화(MacOS, Windows)

Window와 MacOS 환경에서 가상환경을 생성하고 활성화 및 비활성화하는 방법에 대해 소개해드리려고 합니다. 가상환경 생성 처음에 가상환경을 생성합니다. MacOS # python3 -m venv ./"생성하려는 가상환경 이름" $ python3 -m venv ./venv Windows # python -m venv "생성하려는 가상환경 이름" >python -m venv venv 가상환경 활성화 가상환경을 활성화합니다. MacOS # source "생성한 가상환경 이름"/bin/activate $ source venv/bin/activate Windows # cd "생성한 가상환경 이름"/Scripts >cd venv/Scripts >activate 가상환경 비활성화 가상환경을 비활성화하는 명령어는..

Coding/Python 2023.12.27

[Python] for else구문과 while else구문 정리

for-else구문 else구문이 실행된 경우 for구문 내부의 break를 실행되지 않고, for구문이 종료된 경우 else구문을 실행합니다. for i in range(1,5): if i == 5: break print(i) else: print("break 실행되지 않았으며, else가 실행되었음") # 실행결과 # 1 # 2 # 3 # 4 # break 실행되지 않았으며, else가 실행되었음 else구문이 실행되지 않은경우 for구문 내부의 break를 실행되었으며, else구문이 실행되지 않습니다. for i in range(1,5): if i == 3: break print(i) else: print("break 실행되지 않았으며, else가 실행되었음") # 실행결과 # 1 # 2 whil..

Coding/Python 2023.11.30

[Python] round의 사사오입과 오사오입에 대해

결론부터 말하자면 Python의 round함수는 오사오입을 사용한다. 사사오입과 오사오입은 숫자를 반올림하는 두 가지 방법이다. 이들은 소수점 이하의 숫자를 처리할 때 사용되며, 각각의 방식은 두 가지이다. 사사오입(Round Half Up)이란? 5 이상에서 올리고, 5 미만은 버리는 것이 우리가 알고 있는 반올림 방식인 사사오입이며 Round Half Up이라고 한다. 일반적으로 알고 있는 반올림이다. 소수점 0부터 5까지는 파이썬의 floor 함수를 사용하는 것과 같고, 소수점이 5를 초과할 때부터는 파이썬의 ceil 함수와 동일하다. 그림으로 표현하면 다음과 같으며, 프로그램 실행 시 다음과 같이 결과가 나온다. 혹시 코드가 필요한 사람이 있을 수 있으므로 코드도 첨부하겠다. from math i..

Coding/Python 2023.11.26

[Python] sort, sorted 리스트 정렬

Sort() 함수 sort() 함수는 리스트를 오름차순으로 정렬하는 함수이다. (반환 X) 리스트만 사용할 수 있기 때문에 sorted() 함수에 비해서는 덜 편리한 편이다. str_N =['1','7','10','4','5','6','3']#string 형 int_N =[ 1 , 7 , 10 , 4 , 5 , 6 , 3 ]#int 형 int_N.sort() str_N.sort() # 원소의 위치를 오름차순으로 바꾼다. print(int_N) # [ 1 , 3 , 4 , 5 , 6 , 7, 10 ] print(str_N) # ['1','10','3','4','5','6','7'] # 원소들이 int 형이 아닌 string 형이다. # 그러므로 크기가 아닌 사전순으로 정렬된다. Sorted() 함수 그리고..

Coding/Python 2023.11.15

[Python] 2개이 요소를 비교할 때, min()과 max() 함수가 if 문보다 느린 이유가 뭘까?

배경 백준 Floyd-Warshall 문제를 풀다가 시간초과가 발생했다. 시간초과 발생한 것을 보고 게시판을 찾아보면서, 내 코드와 비슷하지만, 정답을 맞은 코드를 보며 알고리즘을 비교했다. 알고리즘에는 차이가 없지만 if 문과 min 함수의 차이가 눈에 띄었다. 그리고 코드를 바꿔 풀어보면서 제목과 같은 의문을 갖게 되었다. 비교 코드 import time if __name__ == '__main__': sim = 10**8 s = time.time() for _ in range(sim): if 1 > 2: pass res1 = time.time()-s s = time.time() for _ in range(sim): max(1, 2) res2 = time.time()-s print('compariso..

Coding/Python 2023.10.17