목록Language (17)
내 잡다한 노트
파이썬의 가상환경은 특정 프로젝트에 독립적인 패키지 및 라이브러리 환경을 제공하기 위해 사용되는 도구입니다. 가상환경을 사용하면 시스템 전역(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..
# stdlib.h stdlib.h는 C 표준 라이브러리의 일부로, 프로그램의 메모리 관리, 난수 생성, 문자열 변환, 동적 메모리 할당, 프로그램 종료 등과 같은 일반적인 유틸리티 함수를 포함하고 있습니다. 여기에는 malloc(), free(), realloc()과 같은 동적 메모리 할당 함수, rand()와 srand()와 같은 난수 생성 함수, atoi()와 atof()와 같은 문자열 변환 함수, exit()와 같은 프로그램 종료 함수, 그리고 system()과 같은 명령어 실행 함수가 포함됩니다. 이러한 함수들은 C 프로그래밍에서 자주 사용되며, 특히 메모리 관리와 관련된 함수들은 동적 메모리 할당이 필요한 프로그램에서 필수적으로 사용됩니다. # stdio.h stdio.h는 C언어에서 표준 입..
배열 포인터는 배열의 첫번째 요소를 가리키는 포인터이며, 이걸 사용하면 배열을 간단하고 효율적으로 다룰 수 있다. 다차원 배열을 표현하는데 편하다. 사용하는 이유는 다양하다. 예를 들어, 함수에서 배열을 인수로 전달해야 할 때 포인터를 사용하여 배열을 전달할 수 있다. 또한, 다차원 배열의 경우에는 배열 포인터를 사용하여 배열의 요소에 빠르게 접근할 수 있다. int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; 이 2차원 배열을... int (*pArr)[4] = arr; 이렇게 선언할 수 있음. pArr은 각 행의 첫번째 원소의 주소값을 가리키다보니 [4]라는 열의 크기만 같이 선언하면 2차원 배열에 다 접근할 수 있게된다.
클래스의 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인 행렬을 생성...
# memset : memory setting. 즉, 메모리를 (특정 값으로) 세팅한다. 이 함수는 메모리의 내용을 원하는 크기만큼 특정 값으로 세팅할 수 있는 함수이다. 헤더파일은 memory.h 또는 string.h 둘 중 아무거나 void* memset (void* ptr, int value, size_t num) 첫번째 인자 *ptr은 세팅하고자 하는 메모리의 시작 주소. 포인터가 위치하는 자리 두번째 인자 value는 메모리에 세팅하고자 하는 값을 넣는다. 세번째 인자는 길이를 뜻하고 바이트 단위이다. 보통, 길이 * sizeof(데이터타입) 의 형태로 작성. 리턴값은 성공하면 ptr을 반환, 실패하면 null을 반환 ex) 문자 배열 변경, 배열 초기화 주의점) 0과 char 타입이 아닌 값을..