목록Language/Python (11)
나의 잡다한 노트 및 메모
파이썬의 가상환경은 특정 프로젝트에 독립적인 패키지 및 라이브러리 환경을 제공하기 위해 사용되는 도구입니다. 가상환경을 사용하면 시스템 전역(global) 파이썬 환경과 분리된 별도의 파이썬 환경을 생성할 수 있습니다. 이를 통해 프로젝트 간의 의존성 충돌을 방지하고, 프로젝트마다 다른 버전의 패키지를 관리할 수 있습니다. 가상환경의 주요 특징독립성 보장프로젝트마다 다른 라이브러리 버전을 사용할 수 있음.시스템의 기본 파이썬 환경이나 다른 프로젝트의 환경에 영향을 주지 않음.재현 가능한 환경 제공requirements.txt 파일을 통해 동일한 환경을 다른 개발자가 쉽게 재현 가능.운영 및 테스트 편리특정 파이썬 버전을 사용하거나 특정 패키지 조합을 테스트하기 용이. 가상환경 사용법1. 가상환경 생성Py..
import datetime import time def my_timer(original_function): import time def wrapper(*args, **kwargs): t1 = time.time() result = original_function(*args, **kwargs) t2 = time.time() - t1 print(f'{original_function.__name__} 함수가 실행된 총 시간: {t2}초') return result return wrapper @my_timer def display_info(name, age): time.sleep(1) print(f'display_info({name}, {age}) 함수가 실행됐습니다.') def outer_func(calc:i..
클래스의 attribute __init__ 생성자 안에서 self.attribute = value 의 형식을 작성해 독립적인 객체들만의 고유한 변수를 만들 수 있다. 밑의 클래스 변수와 구별해야한다. 다른 방법으로는 인스턴스를 만든 뒤 속성을 추가하는 방식이 있다. 그러면 해당 인스턴스에만 추가한 속성이 생긴다. 상속 상속은 말 그대로 어떤 클래스에 다른 클래스의 기능을 물려받을 수 있도록 할 수 있는 기능이다. 용도))) 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용. 문법)) class child(parent): pass 상속 관계를 영어로 is-a 관계라고 부른다. 다중상속도 가능해서 클래스 이름 옆 괄호안에 상속할 부모클래스를 여러개 넣을 수 있다. 메소드 탐색..
a라는 (2, 3) shape를 가진 배열이 있다고 가정. # 배열의 사칙연산 a +-*/ value 사칙연산은 a의 모든 값에 사칙연산이 된다. # 배열끼리 연산 b와 c라는 크기가 같은 배열이 있을때, 두 배열을 사칙연산을 한다면, 같은 위치의 요소끼리 사칙연산이 된다. 위에 나온 배열들은 크기가 같을때를 가정한 것이고, 만약 크기가 다르다면??? 그래도 연산을 수행할 수 있다. 브로드캐스팅 덕분인데, 이건 dimension을 추가하거나 array를 복제하여 호환되도록 해서 다양한 모양의 array가 작업에서 함께 작동하도록 만드는 방법이다. 예를 들어 3x3 배열 A와 1x3 배열 B가 있는 경우 브로드캐스팅을 사용하여 함께 추가할 수 있습니다. NumPy는 'A'의 모양과 일치하도록 첫 번째 차원..
# 배열 생성 기본적으로 np.array() 함수를 사용한다. ex) a = np.array([[1, 2, 3,], [1, 2, 3]]) +) numpy는 ndarray라는 클래스를 사용하고 반면에 파이썬은 list를 사용한다. numpy는 C로 구현된 CPython에서만 사용되고, 행렬 연산이 c로 구현된 내부 반복문을 사용해 python 반복문에 비해 속도가 빠르다. 차이점) ndarray 클래스는 연속적인 메모리 배치를 가지고 있어 모든 원소가 같은 자료형이여야 한다. ndarray 클래스는 벡터화 연산을 지원한다. a*b를 하면 각 요소들끼리 서로 곱한 결과를 보여준다. np.zeros((a, b), dtype=) 튜플 형태로 인자를 넣어 shape가 (a, b)이고 값은 모두 0인 행렬을 생성...
# 가변 인수 용도 ) 매개변수가 여럿인 함수를 짤 때 사용, 매개변수가 몇개가 필요한지 모를때 def funtion(*args): print(args) *를 붙이면 args라는 이름의 튜플이 되고 iterable해서 반복문도 사용할 수 있다. 고정인수와 가변인수를 함께 사용할 땐, 고정 매개변수를 먼저 지정해야한다. # 언패킹 인수를 순서대로 넣을 때 리스트나 튜플을 사용하는 방법 x = [10 ,20, 30] def print_numbers(a, b, c) 로 만들어짐. print_numbers(*x) 를 하면 x의 요소들이 순서대로 함수에 들어가게 된다. 이때, 함수의 매개변수 개수와 리스트의 요소 개수는 같아야 한다. 딕셔너리를 언패킹할때는 ** 으로 써야한다. 이때, 함수의 매개변수 이름과 딕셔..
# 올림, 내림 math 클래스 안의 ceil, floor함수를 사용하자 math.ceil(i)는 올림 math.floor(i)는 내림 근데, 인자로 들어온 i의 값이 정수 타입으로 반환된다고 한다. #반올림 소수점을 n번째 까지만 표현하고 반올림을 하고 싶을 때, round 함수를 사용하면 된다. round(숫자, n) 파이썬의 반올림은 반올림 하려는 수가 올림, 내림했을 때 동일하게 차이가 나는 경우에는 짝수값으로 반올림한다. round(0.5)의 값은 이상하게도 0이다... 0.5는 0에도 0.5 차이나고 1에도 0.5 차이가 나는 상황이다. 이때 똑같이 가깝다면 짝수를 반환하게 설계돼어 0을 반환한다. 부동소수점의 오차때문에 오류가 생길 수 있음... 부동소수점을 이용해 연산을 할때는 우리 예상과..
dp = [[0] * len(b) for _ in range(len(a))] dp가 이런 값일때 출력으로 확인해주면 길~게 출력이 돼서 확인하기 힘든 경우가 있다. 그럴 땐 print(*dp, sep="\n") 이렇게 작성해주면 [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] 이렇게 출력이 돼서 쉽게 디버깅을 해줄 수 있다. 진짜 개꿀 리스트앞에 * 이게 리스트 안에서 가장 겉에 있는 값을 한꺼번에 넘겨주기 때문이다. 즉, dp가 2차원배열이니 겉에 값인 2차원 안에 있는 값을 한..