Dev./Python

Python - 함수 : 작동원리, return, 기본값, 가변, 키워드

Ivan'show 2023. 6. 11.
728x90
반응형

함수란?

  • 함수는 값을 계산하거나 작업을 수행하는 하위 프로그램이다.
  • 함수의 유형에는 내장함수, 사용자 정의 함수가 있다.
  • 한 번 작성하면 필요한 만큼 여러번 사용할 수 있다. → 코드의 재사용성이 증가한다.
  • 함수로 관리하기 때문에 코드 유지 관리가 쉬워진다.
  • 큰 작업을 여러 작은 작업을 나눌 수 있기 때문에 디버깅에 도움이 된다.
  • 함수에 새로운 기능을 추가하거나 제거하는 것으로 영향을 줄 수 있다.

함수 정의

함수를 정의하기위해서는 def 키워드를 사용하여 함수이름과 괄호 뒤에 함수를 정의한다.

def 함수명():
	지역변수
	코드블록
	return (변수 또는 표현식)
def 함수명(매개변수1, 매개변수2, ...):
	지역변수
	코드블록
	return (변수 또는 표현식)

함수 호출

함수는 호출할때 실행된다. (스스로 실행되지 않음)

함수는 정의/호출을 구분 할 수 있어야 한다.

#함수명()
add()

#함수명(인자1, 인자2, ...)
add(20)
add(10.56)
item("test")

함수의 작동 원리

매개변수가 없는 경우

def add():
	x = 10
	y = 20
	c = x + y
	print(c)

add()
#출력 : 30

매개변수가 있는 경우

def add(y):
	x = 10
	c = x + y
	print(c)

add(20)
#출력 : 30

반환문(return)

return문을 사용해 함수의 값을 반환할 수 있다. 하나 이상의 변수/값을 반환받을 수 있다.

#return (변수 or 표현식)

return 50
return (50)
return (x + y)
return (y)
return (2, 4)
return (x, y)
def add(y)
	x = 10
	c = x + y
	return c
sum = add(20)
print(sum)

기본값 매개변수

함수를 정의할때 매개변수 기본값을 지정할 수 있다. 호출 시 값을 전달하지 않으면 기본값이 사용된다.

def greet(name, msg="안녕하세요!"):
		print(name, msg)

greet("철수"")
#출력 : 철수 안녕하세요!
greet("영희", "반갑습니다!")
#출력 : 영희 반갑습니다!

가변 매개변수

가변 매개변수로 함수에 여러 개의 인자를 전달할 수 있다. 이를 사용하려면 *를 붙인다

def sum(*numbers):
		result = 0
		for number in numbers:
				result += number
		return result
total = sum(10, 20, 30, 40)
#출력 : 100
print(total)

키워드 인자

함수를 호출할 때 인자 이름과 함께 값을 전달할 수 있고, 순서 상관없이 사용할 수 있는 장점이 있다

def greet(name, msg):
		print(name, msg)

greet(name="철수", msg="안녕하세요!")
#출력 : 철수 안녕하세요!
greet(msg="반갑습니다!", name="영희")
#출력 : 영희 반갑습니다!

키워드 가변 매개변수

함수에 여러 개의 키워드 인자를 전달할 수 있다. 매개변수앞에 **를 붙인다.

def display_info(**kwargs):
		for key, value in kwargs.items () :
			print(f" {key}: (value]")

display_info(name="철수", age=25, city="서울")

함수 작성시 주의 사항

  1. 함수 이름은 명확하게 작성. 기능에 대한 간략한 주석을 달아준다.
  2. 가능한 하나의 함수는 하나의 작업만 수행하도록 작성한다.
  3. 함수의 인자와 반환값을 명확하게 작성한다 (간결하게 할수록 좋다).
  4. 긴 함수보다는 작은 함수 여러 개를 사용하는것이 유지관리에 좋다.
728x90
반응형

'Dev. > Python' 카테고리의 다른 글

Python - 패키지  (0) 2023.06.12
Python - 클래스 상속 (Inheritance)  (0) 2023.06.12
Python - Generator  (0) 2023.06.10
Python - Dictionary  (0) 2023.06.09
Python - Tuple  (0) 2023.06.08

댓글