본문 바로가기
인공지능/파이썬 기초

변수 타입 어노테이션

by hyunji00pj 2024. 10. 2.

KDT_4기 파이썬 기초 1002(1)

2024.10.02 수업 내용 복습일기 첫번째

1.변수 타입 어노테이션

파이썬에서 변수 타입 어노테이션(type annotation)은 변수의 예상 타입을 명시적으로 알려주는 방법입니다. 파이썬은 기본적으로 동적 타입 언어이기 때문에 변수를 선언할 때 타입을 지정하지 않아도 되지만, 타입 어노테이션을 통해 코드의 가독성을 높이고, IDE나 린터(linter)에서 타입 오류를 미리 잡아낼 수 있도록 도와줍니다.

 

2. 기본 타입 어노테이션

name = '김사과'

#기본 타입 어노테이션
name: str = '김사과'

age = 10

#기본 타입 어노테이션
age: int = 10

height = 10.5

#기본 타입 어노테이션
height: float = 10.5

is_lover = True

#기본 타입 어노테이션
is_lover: bool = True
print(name)
print(type(name))

3. 리스트, 튜플, 딕셔너리, 세트

컬렉션 타입에 대한 어노테이션은 조금 더 복잡합니다. 이를 위해 List, Tuple, Dict, Set 등의 제네릭 타입을 사용하게 됩니다. 이러한 타입들은 typing 모듈에서 가져올 수 있습니다.

 

from typing import List, Tuple, Dict, Set
names = ['김사과','오렌지','반하나']

#어노테이션
names: List[str] = ['김사과','오렌지','반하나']
names: list[str] = ['김사과','오렌지','반하나'] #파이썬 3.9 버전 이후 기본형도 이제는 가능
age = (25,20)
age: Tuple[int,int] = (25,20)
age: tuple[int,int] = (25,20)
student_score = {'김사과':90.5,'오렌지':88.3}
student_score: Dict[str,float] = {'김사과':90.5,'오렌지':88.3}
student_score: dict[str,float] = {'김사과':90.5,'오렌지':88.3}
uniq_numbers = {1,2,3,4,5}
uniq_numbers: Set[int] = {1,2,3,4,5}
uniq_numbers: set[int] = {1,2,3,4,5}
print(names)
print(age)
print(student_score)
print(uniq_numbers)

4. 함수

함수의 매개변수와 반환 타입에 대한 어노테이션은 다음과 같이 합니다

 

#함수 어노테이션
def add(a,b):
  return a+b
print(add(10,3))
print(add('십','삼'))

add.__annotations__# 타입 어노테이션을 확인하는 방법

5.클래스

클래스 또는 사용자 정의 타입에 대한 어노테이션도 가능합니다.

class Student:
  def __init__(self,name:str,age:int):   #클래스 어노테이션
    self.name = name
    self.age = age
  def __str__(self) ->str:  #반환될 타입도 정해줌
    return '이름:' + self.name+',나이:' +str(self.age)

  def print_student(s:Student) ->None:
    print(f'이름:{s.name},나이:{s.age}')
student = Student('김사과',20)
print(student)

print_student(student)

6. 옵셔널

변수가 특정 타입이거나 None일 수 있는 경우 Optional을 사용합니다.

from typing import Optional
def find_score(name:str,scores:Dict[str,float]) -> Optional[float]:#리턴은 float없으면 None
  return scores.get(name)#get 키에대한 벨류를 뽑음
print(find_score('김사과',{'김사과':80.5,'오렌지':40.8,'반하나':90.5}))

print(find_score('이메론',{'김사과':80.5,'오렌지':40.8,'반하나':90.5}))

7. 유니온

여러개의 타입이 허용될수 있는 상황에 사용

 

from typing import Union
def toString(num: Union[int,float]) ->str:
  return str(num)
print(toString(10))
print(toString(10.5))

def toString(num: int | float) ->str: #파이썬 3.10 이후
  return str(num)
print(toString(10))
print(toString(10.5))

li: List[Union[int,str]] = [10,'안녕',3.14]
print(li)

8. 파이널

재할당이 불가능한 변수(즉 상수)에 대한 타입 어노테이션을 사용

from typing import Final
out: Final[int] = 10

 

'인공지능 > 파이썬 기초' 카테고리의 다른 글

파일 입출력 모듈(Jupyter)  (2) 2024.10.02
주피터 노트북(cmd)  (0) 2024.10.02
파일 입출력을 이용한 단어장 만들기  (4) 2024.10.02
파일 입출력  (0) 2024.10.02
파이썬 모듈  (0) 2024.10.01