CodeGym /자바 코스 /Python SELF KO /매개변수 심화 조작

매개변수 심화 조작

Python SELF KO
레벨 6 , 레슨 5
사용 가능

11.1 무한한 수의 매개변수

Python에서는 함수가 무한한 수의 매개변수를 받을 수 있도록 만들 수 있어. *args를 사용하면 일반 매개변수, **kwargs를 사용하면 이름으로 지정된 매개변수를 전달할 수 있지.

*args 사용법

*args는 함수가 임의의 수의 위치 인수를 받아서 튜플로 처리할 수 있게 해줘. 사용 예시:


def print_all(*args):
    for item in args:
        print(item)
        
print_all(1, 'apple', True)  # 1, apple 그리고 True를 출력해.
        

args 변수는 함수 호출 시 전달된 모든 매개변수를 담은 튜플이 될 거야.

**kwargs 사용법

**kwargs*args와 비슷하게 작동하지만, 이름으로 제공된 매개변수를 딕셔너리 형태로 받아. 이를 통해 함수는 어떤 수의 명명된 인수도 받을 수 있어:


def print_named_items(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
        
print_named_items(fruit='apple', number=1)  # fruit: apple 그리고 number: 1를 출력해.
        

이런 메커니즘 덕분에 함수가 매우 유연해지고, 매개변수 개수를 미리 알 수 없는 API 개발이나 이벤트 처리 함수에 유용해.

이 둘을 더 자세히 살펴보겠지만, Python 내의 함수에서 전달받은 모든 인수에 쉽게 접근할 수 있다는 걸 알면 좋겠어. 그리고 원하는 것은 무엇이든 전달할 수 있어.

11.2 타입 명시

알다시피, Python 변수에는 미리 지정된 타입이 없어. 어떤 타입의 값이든 변수에 할당할 수 있고, 다음 줄에서 새로운 타입의 값을 할당할 수도 있어.

작은 프로그램에서는 매우 편리하지만, 큰 프로그램에서는 그렇지 않아. 프로그램이 매우 커지고 함수가 수천 개가 될 때, 어떤 데이터를 어떤 순서로 전달해야 할지 프로그래머가 기억할 수 없어.

정적 타입 언어에서는 IDE가 프로그래머에게 어떤 매개변수와 타입을 함수 호출 시 전달해야 하는지 알려줘. 하지만 Python은 동적 타입 언어라 그런 도움을 받을 수 없어.

그래서 Python 개발자들이 type hinting이라는 걸 생각해냈어. 변수 타입과 비슷하지만, 제한이 없는 권고사항 같은 거야.

타입 명시는 Python 3.5에서 도입되었고, PEP 484 표준 덕분에 인기를 얻었어. 프로그래머가 변수, 인수, 함수의 반환값에 예상되는 타입을 지정할 수 있는 메커니즘이지.

Python은 여전히 동적 타입 언어로 남아 있지만, 타입 명시는 명확성을 증가시키고 정적 타입 검사를 지원해. 타입 명시 예시:


def add_numbers(a: int, b: int) -> int:
    return a + b
        

변수의 타입은 콜론을 통해 지정되고, 함수의 반환값 타입은 화살표를 통해 지정돼.

타입 명시가 주는 장점:

  • 문서화 개선: 명시적 타입은 코드를 자체 문서화시켜.
  • 더 나은 자동완성: 코드 에디터가 자동완성 향상에 타입 정보를 활용할 수 있어.
  • 디버깅 도움: 정적 타입 검사는 프로그램 실행 전에 잠재적 오류를 찾아낼 수 있어.

타입 작업 도구

Python은 선언된 변수 타입에 반응하지 않아. 대신 Python에는 mypy라는 도구가 있어. 타입 명시를 사용한 코드에서 오류를 잡아내는 데 도움을 주는 인기 있는 정적 타입 분석 도구야.

1
Опрос
Python에서의 함수,  6 уровень,  5 лекция
недоступен
Python에서의 함수
Python에서의 함수
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION