Language/Python

[Python] 함수

pinomaker 2022. 6. 12. 14:43

함수란?

특정한 기능을 수행하는 프로그램 단위이다.

 

파이썬에서의  함수는 사용자 정의 함수와 내장 함수로 나누어진다.

 

함수 선언 및 호출

# 함수 선언
def a ():
  print("hello") # 들여쓰기 주의
  
a() # 함수 호출

# "hello"

파이썬에서 함수 선언 할 때 주의점은 들여쓰기다. 함수를 선언하고 함수에 포함될 코드는 들여쓰기를 사용하여 작성한다.

 

다른 언어에서도 마찬가지지만, 함수 정의와 호출은 다르다.

함수를 def ~~를  하면 함수를 만들고,  선언 하는 것으로, 실행이 되지 않는다. 

선언한 함수를 실행하기 위해서는  호출을 해야하는  데, 호출을 하는 방법은 함수명() 이다.

 

함수의 인자 이용

기본적인 인자는 아래와 같이사용한다.

# 리턴이 있는 함수 선언
def add(a, b):
  return a + b
  
result = add(3, 2) # 결과를 result에 저장
print(result) # 5

 

인자 값이 넘어오지 않을 경우의 기본 인자 값을 설정 할 수도 있다.

def self (name = "피노"):
  return "안녕하세요! 저의 이름은 " + name + " 입니다. "
  
# 인자가 없는 호출
print(self()) # 안녕하세요! 저의 이름은 피노 입니다. 

# 인자가 있는 호출
print(self("감자")) # 안녕하세요! 저의 이름은 감자 입니다.

 

인자의 순서도 지정이 가능하다.

def self (name, dream):
  return name + "의 꿈은 " + dream + " 입니다."

print(self(dream = "개발자", name = "피노"))
# 피노의 꿈은 개발자 입니다.

 

가변인자 *args

가변인자란 인자의 개수가 변할 수 있거나 미정이라는 것이다.

가변 인자를 사용하게 되면, 인자는 튜플로  넘어온다.

def student(*names):
    for a in names:
        print("팀원 : " + a)

student("피노")
print("---------------")
student("철수", "영희")
print("---------------")
student(*["철수","영희", "맹구"])

# 팀원 : 피노
# ---------------
# 팀원 : 철수
# 팀원 : 영희
# ---------------
# 팀원 : 철수
# 팀원 : 영희
# 팀원 : 맹구

*의 의미는 튜플이나 리스트를 풀어서 가변 인자 형태로 변경하는 것으로, 함수 선언에서 가변 인자를 받고 싶다면 *를, 함수 호출 때, 리스트 인자로 넣고 싶다면 리스트 앞에도 *를 붙이면 된다

 

임의의 키워드 인자 **kwargs

딕셔너리를 인자로 받고 싶을 때 사용한다.

# 딕셔너리를 받는 함수 sports
def sports(**sports):
    for key in sports:
    	# key를 기준으로 순회하며, key를 이용한 value 추출도 가능
        print(key + " : " + sports[key])


sportsList = {"구기" : "축구", "격투기" : "복싱", "맨몸" : "수영"}

sports(**sportsList)

# 구기 : 축구
# 격투기 : 복싱
# 맨몸 : 수영

 

지역 변수와 전역  변수

지역 변수는 함수 내부에서 선언된 함수를 의미하며, 함수 밖에서 사용이 되지 않는다.

name = "피노" # 전역 변수 name

def hello ():
  name = "김인후" # 지역 변수 name
  print(name)
  
hello() # 김인후