오랜만입니다. 꽁냥이에요~~
파이썬 코딩을 하시는 분(꽁냥이도 포함)들은 종종 함수 사용법, 특히 함수에 들어가는 인자(Argument 또는 Parameter)가 무엇인지 또는 클래스가 갖고 있는 메서드가 무엇인지 알고 싶을 때가 있지요. 이 경우 구글링을 해도 되겠지만 파이썬에서 도움말 역할을 하는 함수를 사용하면 더 빠르게 알 수 있어요.
그 주인공은 바로 help라는 함수인데요. 이번 포스팅에서는 help 함수에 대해서 알아보려고 합니다.
아 물론! 지난 포스팅에서 소개한 inspect를 이용해서 알 수도 있어요. 이에 대한 내용은 아래 링크를 통해 확인해보세요.
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), 클래스 내부 메서드를 알아보는 방법에 대해서 알아보았습니다. 이 부분을 알아 두시면 자주 써먹을 수 있어요~~
부디 이 포스팅이 도움이 되시길 바라며 이상 마치겠습니다. 다음 포스팅에서 더 좋은 주제로 찾아뵙겠습니다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 내가 만든 파이썬(Python) 파일(.py) 임포트하기 (414) | 2022.04.05 |
---|---|
[Python] 모듈 경로(Module Path) 알아보기 (361) | 2022.04.05 |
[Python] 함수 내부 코드 가져오기 (370) | 2022.04.03 |
[오류 해결] Pandas data cast to numpy dtype of object. Check input data with np.asarray(data) (835) | 2021.11.05 |
[Python] 인코딩 확인하기 - chardet (813) | 2021.08.04 |
댓글