함수 주석
def f(x) -> 123:
return x
def func(arg1: str, arg2: 1+2, arg3: 'this is annotation') -> bool
위와 같이 파라미터에 : expression 형태로 매개변수 마다 annotation 을 쓸 수 있다.
->
: 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 의 속성에서 정보를 확인해 볼 수 있다
# 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을 작성할 때 주석을 달아 개발자간 커뮤니케이션에 쓰이긴 하지만 이것 또한 지속적으로 작성하기 쉽지 않다.