IT/Python 25

클래스

hasattr(): 인스턴스 또는 클래스 객체의 속성 검사 hasattr(, "") getattr(): 속성 반환 getattr(, "", [디폴트 대상]) 문자열로 전달한 속성의 대상 반환. 존재하지 않으면 디폴트 대상 반환 setattr(): 속성 추가 setattr(, "", ) 문자열로 전달한 속성 추가 후 대상 대입 __slots__: 속성에 고정할 이름을 리스트 @classmethod 클래스 참조로 호출되는 클래스 메소드 정의 전달하는 첫번째 인자는 self가 아닌 cls 인자를 넘겨받아 클래스를 구성하는 메소드를 구현할 때 사용 @staticmethod 클래스 참조조차 전달할 필요가 없는 정적 메소드 정의 전달 인자 없음 인스턴스가 참조할 클래스의 초기 인자를 설정하는 메소드를 넘겨받는 인자..

IT/Python 2023.11.28

모듈과 경로

패키지 실행 파일과 동일 레벨의 폴더를 패키지의 일부임을 알리기 위해, __init__.py를 생성해 폴더 안에 위치 시킴 # __init__.py # 하위 폴더가 더이 상 없을 경우는 입력 내용 불필요 # 만약 하위 파일이나 폴더가 더 있다면 구분없이 모두 추가 __all__ = ['sub1', 'sub2'] 모듈 경로 python이 자동으로 모듈을 탐색하는 경로 sys.path 에서 확인 가능 os별 경로 # win /lib : 보통 python 표준 모듈 위치 /lib/site-packages # pip3등 추가 설치 확장 모듈 위치 # linux /lib//lib /lib//lib/site-packages 임의 경로 불러오기 # win set PYTHONPATH=%PYTHONPATH%; # lin..

IT/Python 2023.11.20

코루틴

코루틴이란 동시성을 위해 사용자가 쪼갠 하위 구문을 대기시키고, 이어서 실행할는 기능 함수 호출의 주/종 관계가 아니므로 시간에 관계 없이 n개의 작업을 대등 관계로 처리할 때 효과적 코루틴은 실행 흐름을 저장 및 복원할 수 있어 대기 및 이어서 실행 가능 코루틴 스케줄러는 한번에 하나의 코루틴만 이어서 실행하고 나머지는 대기 상태 유지 파이썬 코루틴 제너레이터를 개선 사용, 쪼갤 하위 구문 앞에 yield 문 배치 제너레이터의 일종이므로 호출 구문은 코루틴을 실행하는 것이 아니라 코루틴 객체만 생성 코루틴 객체를 인자로 내장 함수 next()를 호출하면 yield까지 실행한 후 대기 인자와 함께 코루틴 객체의 send() 메소드를 호출하면 다음 yield까지 실행 def co_func(): # subr..

IT/Python 2023.11.19

제너레이터

제너레이터란 종료 전까지 이어서 실행하는 함수 제너레이터 객체를 생성한 후 내장 함수 next()를 호출하면 yield 구문까지 실행 yield 문이 결과를 next()에 반환한 후 중단되면 next()는 호출한 곳으로 결과 반환 다음 실행할 yield 구문이 없는 상태에서 next()를 호출하면 제너레이터 객체가 종료되몀ㄴ서 stopIteration 예외 발생 제너레이터와 함수 비교 구분 함수 제너레이터 실행 완전히 실행 부분적으로 실행 실행 흐름 호출될 때 보관되고 종료할 때 복원 종료 전까지 yield 구문을 통해 복원과 보관 반복 호출 호출자를 통해 호출 제너레이터 객체만 생성하고 next()를 통해 제너레이터 호출 반환 return 문을 통해 결과를 반환 yield 문을 통해 결과 반환 # 함수..

IT/Python 2023.11.19

데코레이터

데코레이터란 클로저를 이용해 함수 동작을 확장하는 메타 프로그래밍 기법 중 하나 함수를 인자로 받아 내부에서 실행하는 클로저를 정의한 후 @ 구문을 필요한 함수 앞에 표시 호출자 패턴의 포장 함수를 내장한 클로저의 호출 은폐 @ 구문은 함수 참조를 자유 변수롤 갖는 클로자의 내부 포장 함수로 변경 고차 함수를 이용한 함수 호출은 일급 함수가 아닌 함수의 참조를 인자로 전달하는 고차 함수 데코레이터는 고차 함수 호출을 일급 함수로 보이게 함 함수 프로파일링 데코레이터를 활용하 함수에 부가기능을 추가 # example 1 import time def p_clock(func): def wrapper(*args): s = time.perf_counter() ret = func(*args) e = time.per..

IT/Python 2023.11.18

디버깅

정적분석도구 PyLint Flake8(https://velog.io/@qlgks1/Python-flake8-Black-%EB%8F%84%EC%9E%85-clean-code-%EC%8B%A4%EC%B2%9C%ED%95%98%EA%B8%B0) Black 디버깅 도구 pdb winpdb eclipse + PyDev 로그 지정 파일에 로그 수준 기반으로 디버깅 메시지 기록 from logging import * # 로그 설정 basicConfig(filename = "somthing.log", level=ERROR) # 로그 수준 대응 함수 critical("문자열") error("문자열") warning("문자열") info("문자열") debug("문자열")

IT/Python 2023.11.12

객체의 참조

모든 객체는 식별자, 참조개수 속성을 가짐 식별자(id) 객체의 고유성을 나타내는 정수 식별자가 같으면 동일한 객체 변수에는 식별자가 대입됨 참조개수(ref_count) 얼마나 많은 곳에서 객체를 참조하는지 알려주는 정수 a == b # 식별자가 아닌 대상 자체 비교 a is b # a와 b 각각에 저장되어 있는 식별자(id) 비교 존속시간 객체를 위해 할당한 메모리 공간이 회수되기 전까지 바인딩 유지 해당 객체를 참조하는 곳이 없으면 내장된 쓰레기 수집기가 유휴 시간에 객체 제거 키워드 del 참조 변수의 이름 사용을 막아 빠른 객체 소멸 유도

IT/Python 2023.11.11