Function annotation

Nam Eun-Ji·2020년 11월 26일
0

함수 주석

def f(x) -> 123:
    return x
def func(arg1: str, arg2: 1+2, arg3: 'this is annotation') -> bool

위와 같이 파라미터에 : expression 형태로 매개변수 마다 annotation 을 쓸 수 있다.

  • arg1: 매개변수의 type 을 써놓을 수 있다.
  • arg2 : 간단한 연산 표현 작성이 가능하다.
  • arg3 : string 형태로도 작성 가능하다.
  • -> : function의 return값에 대해서 -> expression형태로 사용한다.


강제성이 없다

강제성이 없다. 즉 annotation이라는 말그대로 주석일 뿐 해당 code 자체에는 어떠한 영향도 미치지 않는다.

# test.py
# Fuctnion annotation
def func(arg1: str, arg2: 1+2, arg3: 'this is annotation') -> bool
    print(f'arg1 = {arg1}')
    print(f'arg2 = {arg2}')
    print(f'arg3 = {arg3}')
    return True

result = func('test1', 3, 'this is test')
print(f'result = {result}')
>>> python3 test.py
arg1 = test1
arg2 = 3
arg3 = this is test
result = True


정보확인 : annotation

annotation 은 해당 함수의 annotation 의 속성에서 정보를 확인해 볼 수 있다

# test.py
# Fuctnion annotation
def func(arg1: str, arg2: 1+2, arg3: 'this is annotation') -> bool
    print(test.__annotations__)
    return True

result = func('test1', 3, 'this is test')
print(f'result = {result}')
>>> python3 test.py
{'arg1': <class 'str'>, 'arg2': 3, 'arg3': 'this is annotation', 'return': <class 'bool'>}
result = True


장점

함수매개변수와 리턴값을 명시적으로 보여준다.
python은 언어의 특성 상 변수의 자료형을 명시적으로 지정하지 않기 때문에 사용성이 간편하고 유연한 대신 코드의 명확성은 떨어지는 단점이 있다. 보통 그래서 function을 작성할 때 주석을 달아 개발자간 커뮤니케이션에 쓰이긴 하지만 이것 또한 지속적으로 작성하기 쉽지 않다.



참고 : https://bluese05.tistory.com/78

profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글