1.TypeChecker
함수에 넣을때 들어가는 파라미터가 지정해둔 정수형으로 들어가는지 체크함
아니면 바로 에러구문 표시
from inspect import getfullargspec
def type_checker(default=None):
def get_decorator(decorated):
spec = getfullargspec(decorated)
argNames = spec.args
annotations = spec.annotations
def decorator(*args, **kwargs):
for idx, val in enumerate(args):
argName = argNames[idx]
if (argName in annotations and type(val) is not annotations[argName]):
return default
for key, val in kwargs.items():
if (key in annotations and type(val) is not annotations[key]):
return default
return decorated(*args, **kwargs)
return decorator
return get_decorator
데코레이터를 활용해서 이렇게 구현했음
@type_checker(((1, "잘못된 데이터"), None))
def send_message_api(session, phone_number: str):
이건 예시
2. Import All
파이썬에서 폴더를 모듈화 시키고 안에 있는 모든 함수들을 import할때 사용하려고 했음
from .operation import *
from .operation import 변수
from .operation import 함수
from .operation import 클래스
주로 이렇게 사용한다.
하지만 testing 폴더에 __init__.py를 생성하고
from .operation import * # 현재 패키지의 operation 모듈에서 모든 변수, 함수, 클래스를 가져옴
from .geometry import * # 현재 패키지의 geometry 모듈에서 모든 변수, 함수, 클래스를 가져옴
이렇게 작성해준다.
그럼 이제 다른 곳에서는
import testing # testing 패키지만 가져옴
print(testing.add(10, 20)) # 패키지.함수 형식으로 operation 모듈의 add 함수 사용
print(testing.mul(10, 20)) # 패키지.함수 형식으로 operation 모듈의 mul 함수 사용
print(testing.triangle_area(30, 40)) # 패키지.함수 형식으로 geometry 모듈의 triangle_area 함수 사용
print(testing.rectangle_area(30, 40))# 패키지.함수 형식으로 geometry 모듈의 rectangle_area 함수 사용
이렇게 testing만 import해서 하위에 있는 모든 것들을 import 가능함
그리고 __init__.py에서
__all__ = ['add', 'triangle_area'] # calcpkg 패키지에서 add, triangle_area 함수만 공개
이렇게 해주면 모든 것을 공개하는게 아니라 add와 triangle_area만 공개할 수 있음
참고 : https://dojang.io/mod/page/view.php?id=2450
파이썬 코딩 도장: 45.4 패키지에서 from import 응용하기
지금까지 calcpkg 패키지의 모듈을 가져올 때 import calcpkg.operation처럼 import 패키지.모듈 형식으로 가져왔습니다. 그러면 import calcpkg처럼 import 패키지 형식으로 패키지만 가져와서 모듈을 사용할 수
dojang.io
[python] import 관련 : 모듈, 패키지, __init__.py, __all__
모듈을 싱글턴 처럼 쓸 수는 있지만 이렇게 쓰는건 별로다. 파이썬 모듈은 참조된 횟수에 상관없이 단 하나의 복사본만 불러온다. 따라서 모듈 자체를 하나의 싱글턴으로 사용할 수 있다. 그래
umbum.dev
https://nesoy.github.io/articles/2018-07/Python-init-all
Python의 __init__, __all__ 란?
nesoy.github.io
'개발합시다. > Today I Learned' 카테고리의 다른 글
[22.01.18 TIL] Springboot @Query 사용법 (0) | 2022.01.18 |
---|---|
22.01.17 TIL (mysql 쿼리 에러, mysql 테이블 관리, JPA 연동) (0) | 2022.01.17 |
21.09.17 TIL (비트연산자) (0) | 2021.09.20 |
21.08.25 TIL (0) | 2021.08.26 |
2021.08.13 TIL (0) | 2021.08.13 |