본문 바로가기
Python

[Python] def 란?

by Henry Cho 2022. 8. 3.
728x90

def 란?


포스트 난이도: HOO_Junior

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


 

# def function

 

C와 C++, 자바에서는 클래스(Class)를 사용하여 중복되는 작업을 효율적으로 처리할 수 있다. 특히 C의 경우에는 Class 뿐만 아니라 define이라는 지시문을 사용하기도 하는데 이러한 모든 기능들이 파이썬(Python)에서는 def로 사용이 가능하다. def라는 기능을 살펴보기 이전에 def의 사전적 의미를 찾아보면 definition 또는 define을 이해하면 된다. 두 단어의 의미 모두 정의라는 공통된 의미를 가지고 있는데 def는 정의 해당하는 특징을 가지고 있는 문법이다.

 

def를 통해서 특정한 문장이나 계산 방법 또는 특징들을 지정해줄 수 있다. 한마디로 사용자가 지정한 임의의 요소를 def를 통해 정의해주는 것이다. 예를 들어서 HOOAI라는 def를 만들어주고 HOOAI라는 def 블록 안에 HOOAI는 무엇인지, 어떤 종류의 블로그이며 포스트 작성자는 누구인지 등을 작성해줄 수 있다. 이후에 HOOAI를 불러오게 되면 해당 정보들은 정의가 되어 있기 때문에 언제든지 가져와 사용이 가능하다. 이것이 파이썬 def가 가진 기능적 특징의 주요 포인트이다.


# def 작성법

 

def의 기본적인 작성법은 아래와 같다.

 

def HOOAI():
  print("Hello, I'm HOO.")

HOOAI()
Hello, I'm HOO.

 

def를 먼저 작성해주고 def 명을 입력해준다. 그다음으로 다른 문법 작성하는 것처럼 : 를 통해 블록을 지정해준다. 블록 안에 들어갈 내용은 들여 쓰기를 통해서 작성해주면 된다. 위의 예제에서는 HOOAI라는 def를 만들어 주었다. 따라서 이후에 HOOAI를 입력하면 HOOAI 안에 들어있는 문장이  print가 된다.

 

def HOOAI(*languages):
  print("Programming language: " + languages[0] + ", " + languages[4])

HOOAI("Python", "C++", "C", "Java", "Kotlin")
Programming language: Python, Kotlin

 

def의 경우에는 다양하게 사용이 가능한데 위의 경우처럼 포인트와 배열을 통해서도 사용이 가능하다. def 명에 있는 괄호 안의 특정 변수명을 입력해주고 포인팅을 해줄 경우 그것에 맞춰서 사용이 가능하다. 위의 경우에는 languages라는 변수명에 포인트를 지정해주어 languages 중에서도 배열 넘버 0과 4가 출력되는 걸 볼 수 있다.

 

def HOOAI(**name):
  print("My name is " + name["firstName"] + name["surName"])

HOOAI(firstName = "Henry", surName = "Cho")
My name is HenryCho

 

마지막으로 arguments가 무엇인지 알 수 없을때는 ** 를 활용해서 위와 같이 def를 사용할 수도 있다. 이 외에도 def를 통해서 다양한 방법을 많이 사용되며 사실상 파이썬 프로그래밍에 있어서 무조건적으로 사용되는 문법이 바로 def이다. def를 사용함으로써 중복되는 작업을 한 번의 작성으로 끝낼 수 있는 간단하고 효율적인 기능이기 때문에 정말 많이 사용되는 기능이다. 실제로 필자가 본 카카오 코딩 테스트 예제 문제에서도 def를 제대로 이해하지 못한다면 문제를 풀 수가 없어 보였기에 def 기능은 꼭 제대로 알고 가는 것이 중요하다.


 

728x90

'Python' 카테고리의 다른 글

[Python] Sets란?  (0) 2022.08.08
[Python] defaultdict  (0) 2022.08.04
[Python] if 문이란? (if statement)  (0) 2022.07.31
[Keras] model.compile(), 모델 컴파일  (0) 2022.07.28
[Keras] Dense layer, Dense class  (0) 2022.07.21

댓글