본문 바로가기
프로그래밍/Python

[Python] 함수에 어떤 인자(Argument)가 있는지 알아보기

by 부자 꽁냥이 2022. 4. 3.

오랜만입니다. 꽁냥이에요~~

 

파이썬 코딩을 하시는 분(꽁냥이도 포함)들은 종종 함수 사용법, 특히 함수에 들어가는 인자(Argument 또는 Parameter)가 무엇인지 또는 클래스가 갖고 있는 메서드가 무엇인지 알고 싶을 때가 있지요. 이 경우 구글링을 해도 되겠지만 파이썬에서 도움말 역할을 하는 함수를 사용하면 더 빠르게 알 수 있어요.

 

그 주인공은 바로 help라는 함수인데요. 이번 포스팅에서는 help 함수에 대해서 알아보려고 합니다.

 

아 물론! 지난 포스팅에서 소개한 inspect를 이용해서 알 수도 있어요. 이에 대한 내용은 아래 링크를 통해 확인해보세요.

 

[Python] 함수 내부 코드 가져오기

 

[Python] 함수 내부 코드 가져오기

반갑습니다~ 꽁냥이입니다~ 코딩을 하다 보면(특히 알고리즘을 구현하려고 할 때) 특정 라이브러리가 제공하는 함수가 어떻게 동작하는지 알고 싶을 때가 있습니다. 이를 위해 함수 내부 코드를

zephyrus1111.tistory.com

 


1) 함수 인자 알아보기

먼저 임의로 함수 func을 만들어 줍니다. 이 함수는 두 인자를 더하여 리턴합니다. 이때 이 함수에 대한 부연 설명도 추가했습니다.

 

def func(x, y):
    '''
    Return sum of x, y
    '''
    return x+y

 

이제 이 함수의 인자(Argument 또는 Parameter)가 무엇이 있는지 알아보기 위해 help 함수를 사용할 거예요. 사용법은 간단합니다. help 함수에 알고자 하는 함수명을 넣어주면 됩니다.

 

help(func) ## help(함수명)

 

코드를 실행하면 아래와 같이 함수에 들어가는 인자 x, y와 함수 설명 부분까지 출력되는 것을 알 수 있습니다.

 


※ 여기서 잠깐 ※

 

함수의 인자를 알아보기 위한 또다른 방법도 있어요. __code__. co_varnames를 이용하면 됩니다. 아래 코드는 함수명을 입력받으면 그 함수의 인자와 인자 개수(__code__. co_argcount)를 출력합니다.

 

def get_argument(func):
    print( f'# of the Arguments : {func.__code__.co_argcount}')
    print(f'Name of the Arguments : {func.__code__.co_varnames}')

 

get_argument(func)

 



2) 클래스 내부 메서드 알아보기

help는 클래스 내무 메서드를 알아보기 위해서도 사용할 수 있습니다. 하지만 함수 인자를 알아볼 때와는 동작이 약간 달라요.

 

먼저 임의의 클래스 Person을 만들어 줍니다. 이 클래스에는 이름(name)과 나이(age)를 초기값으로 설정해야 합니다. 그리고 한 살 더 먹게 하는 메서드(add_age), 개명을 위한 메서드(change_name)를 정의했고 또한 부연 설명도 추가했습니다.

 

class Person():
    '''
    Person Class
    Intialized by name and age
    '''
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def add_age(self):
        self.age += 1
        
    def change_name(self, name):
        self.name = name

 

이제 help를 사용하여 클래스에 대해서는 어떻게 동작하는지 살펴봅시다. 사용법은 함수를 살펴볼 때와 동일하게 클래스명을 넣어주면 됩니다.

 

help(Person) ## help(클래스명)

 

 

보시는 바와 같이 클래스 부연 설명과 더불어 어떤 메서드가 있는지 계층적으로 상세하게 설명해줍니다. 


※ 여기서 잠깐 ※

 

help 함수는 굉장히 상세하게 내용을 출력하므로 어떤 메서드가 있는지 한눈에 잘 안들어 올 수 있어요. 이때 dir 함수를 사용하면 해당 클래스 안에 포함된 메서드만 깔끔하게 (?) 알려줍니다.

 

아래 코드는 Person 클래스 내부 메서드를 출력합니다(이때 언더바 두개가 포함된 메서드는 제외했습니다). 

 

[x for x in dir(Person) if '__' not in x]

 


 


이번 포스팅에서는 함수 내부 인자(Argument 또는 Parameter), 클래스 내부 메서드를 알아보는 방법에 대해서 알아보았습니다. 이 부분을 알아 두시면 자주 써먹을 수 있어요~~

 

부디 이 포스팅이 도움이 되시길 바라며 이상 마치겠습니다. 다음 포스팅에서 더 좋은 주제로 찾아뵙겠습니다.


댓글


맨 위로