ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 몰랐던 문법 정리
    언어/Python 2022. 7. 16. 15:03
    728x90
    반응형
    SMALL

    매개변수 *args, **kwargs

    함수에서 몇 개의 인자가 들어올지 모르는 상황이나, 매개변수 선언을 한 개만 하고 싶을 경우 사용한다.

    *args - 선언된 매개변수에 인자들이 튜플 형식으로 들어간다.

    예시)

    def function(*args):
        print(args)
    
    function('hi',4,'python')
    #('hi', 4, 'python')

    **kwargs - kwargs - 선언된 매개변수에 인자들이 딕셔너리 형식으로 들어간다.

    예시)

    def function(**kwargs):
        print(kwargs)
    
    function(name='cotton',age=26,hi='hello')
    #{'age': 26, 'hi': 'hello', 'name': 'cotton'}

    주의)

    def argsFunction(name,*args,hi):
        print(name,end=" ")
        print(args,end=" ")
        print(hi,end=" ")
    
    def kwargsFunction(name,**kwargs,hi):
        print(name,end=" ")
        print(kwargs,end=" ")
        print(hi,end=" ")

    *args, **kwargs 모두 중간에 들어갈 경우 에러가 나게 된다. 이유는 args,kwargs 이후에 선언된 매개변수에는 어떠한 값도 할당되지 않기 때문이다.

    그러므로 *args와 **kwargs는 매개변수의 마지막에 선언해줘야 한다.

     

     

    typing 모듈 (v3.6)

    파이썬에서 다른 c언어나 java와 같이 변수의 타입을 지정해주는 방법도 있다. 파이썬의 typing모듈에서 여러 타입들을 import해서 변수의 타입을 지정해줄 수 있다.
    from typing import List,Dict,Tuple,NewType
    
    numList: List[int] = [1, 2, 3]
    menu: Dict[str, int] = {"beer": 4000, "soju": 4000, "wine",10000}
    userInfo: Tuple[int, str, str] = (20, "Cotton", "hello")
    
    Student=NewType('StudentID',int)
    x=Student(1234)

    Callable

    파이썬에서는 함수를 일반 값처럼 변수에 저장하거나 함수의 인자로 넘기거나 함수의 반환값으로 사용할 수 있다. Callable을 이러한 함수에 대한 타입 어노테이션을 추가할 때 사용한다.

    예시)

    from typing import Callable
    
    def add(a,b):
        return a+b
    
    def function(add:Callable[[int,int], int], a:int,b:int) -> None:
        print(add(a,b))
    
    function(add,1,2)
    #3

     

    위와 같은 경우 add함수는 int형의 인자를 2개 받고 int형 반환인자를 하나 갖는 함수임을 알 수 있다.

    타입 추상화

    함수의 매개변수에 대한 타입 어노테이션을 추가해줄 경우, 타입을 추상적으로 명시해줄 수 있게 해준다. 리스트와 같은 경우 list, tuple 등 여러 리스트가 인자로 들어올 수 있기 때문에 `Iterable`을 통해 추상적으로 명시해줄 수 있다.
    from typing import Iterable, List
    
    def toStrings(nums: Iterable[int]) -> List[str]:
        return [x+10 for x in nums]
    
    print(toString([1,2,3])
    #[11,12,13]
    print(toString((1,2,3))
    #[11,12,13]
    print(toString({1,2,3})
    #[11,12,13]

    주의)

    하지만, 파이썬은 타입 지정을 해주더라도 저절로 정적 유형 검사를 해주지 않습니다. 타입 지정에 대한 별도의 검사를 위해서는 mypy와 같은 타입체커를 도입해야 한다.

    반응형
    LIST

    '언어 > Python' 카테고리의 다른 글

    Flask 기본  (0) 2022.11.30
    virtualenv로 가상환경 설정하기  (0) 2022.07.16

    댓글

Designed by Tistory.