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="서울")
함수 작성시 주의 사항
- 함수 이름은 명확하게 작성. 기능에 대한 간략한 주석을 달아준다.
- 가능한 하나의 함수는 하나의 작업만 수행하도록 작성한다.
- 함수의 인자와 반환값을 명확하게 작성한다 (간결하게 할수록 좋다).
- 긴 함수보다는 작은 함수 여러 개를 사용하는것이 유지관리에 좋다.
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 |
댓글