https://skeo131.tistory.com/45
팰린드롬을 설명하는 코드에서 type hint에 대해 간략하게 설명했다.
그런데 다음과 같은 코드에서 파이썬을 컴파일할 때 오류가 발생했다.
def reorderLogFiles(logs: List[str]) -> List[str]:
letters, digits = [], []
for log in logs:
if log.split()[1].isdigit():
#이하생략
def reorderLogFiles(logs: List[str]) -> List[str]: NameError: name 'List' is not defined
과 같은 오류가 발생했는데 이러한 오류는 List[str]을 'List[str]'롸 같이 string literal로 변경해준다면 정상적으로 작동된다.
def reorderLogFiles(logs: 'List[str]') -> 'List[str]':
letters, digits = [], []
for log in logs:
if log.split()[1].isdigit():
# 이하생략
>>> ['let1 art can', 'let3 art zero', 'let2 own kit dig', 'dig1 8 1 5 1', 'dig2 3 6']
이 내용은 밑에 글에서 참조하여 작성했다.
https://velog.io/@moreal/Future-of-python-type-hint
2020.8.31 추가:
type hint는 string으로 쓸 필요 없이 다음과 같이 모듈을 추가함으로써 사용할 수 있다.
from typing import Any, Sequence
def func(a: Sequence, key: Any) -> int:
for i in range(len(a)):
if a[i] == key:
print(f'리스트에 {key}이/가 존재한다.')
break
else:
print(f'리스트에 {key}이/가 존재하지 않는다.')
return
a = [1,2,3,4]
key = 3
func(a, key)
>>> 리스트에 3이/가 존재한다.
key = 10
func(a, key)
>>> 리스트에 10이/가 존재하지 않는다.
출처:
https://python.flowdas.com/library/typing.html
'컴퓨터 > 파이썬 공부정리' 카테고리의 다른 글
[Python] index() 정리 (0) | 2020.09.01 |
---|---|
[Python] for ~ else, while ~ else를 사용하는 방법 (0) | 2020.08.31 |
[Python] max(str, key=len) (0) | 2020.08.25 |
[Python] max(str, ...)에 대해서 (0) | 2020.08.25 |
[Python] 한권으로 개발자가 원하던 파이썬 심화 A to Z - 1. globals(), vars() (0) | 2020.08.18 |