파이썬기초-10 함수
함수
- 입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내는것
- 반복되는 부분이 있을 경우 반복되는 부분을 한 뭉치로 묶어놓는 기능
함수 정의
def
는 함수를 만들 때 사용하는 예약어임- 함수명은 만드는 사람이 임의로 만들 수 있음
- 함수명 뒤 괄호안에 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수임
- 함수 선언이 끝났으면, 함수 내에서 수행할 문장을 입력
def 함수이름(매개변수):
# 실행할 문장
pass
def say_hello():
print("Hello")
say_hello()
Hello
매개변수와 반환값
- 매개변수에 접근하기 위해서는 함수를 호출할 때
()
안에 인자를 넣어주면 됨 - 반환값
return
은 함수에서 입력값을 받아 어떤 처리를 하여 반환하는 값 - 매개변수의 개수와 함수를 호출할 때 인자 개수가 맞지 않으면 오류가 생김
def hello(name):
print(f"hello {name}!")
hello("Mr.Kim")
def add(a, b):
result = a + b
return result
add(3, 4)
hello Mr.Kim!
'\ndef sub(a, b, c):\n result = c-a-b\n return result\n\nsub(3, 4)\n'
기본값 매개변수
- 함수의 매개변수에는 기본값을 설정할 수 있음
- 기본값 매개변수는 항상 맨 뒤에 있어야 함
- 함수를 호출할 때 인자값을 할당하면 기본값이 설정한 인자값으로 덮어쓰기됨
def profile(name, age=23, country="서울"):
return f"이름: {name}, 나이: {age}, 사는곳: {country}"
print(profile("Mr.kim"))
print(profile("Mr.D", 30, "부산"))
이름: Mr.kim, 나이: 23, 사는곳: 서울
이름: Mr.D, 나이: 30, 사는곳: 부산
키워드 매개변수
- 함수를 호출할 때 인자에 직접 값을 할당할 수 있음
def keyword1(a, b, c):
print(a, b, c)
keyword1(b=3, a=2, c=1)
def keyword2(a, b, c = 1):
print(a+b+c)
keyword2(b = 10, a = 20)
2 3 1
31
가변 매개변수
- 매개변수가 몇 개인지 알 수 없을때 사용
- 변수이름 앞에
*
를 붙여서 사용 - 가변 매개변수를 사용하게 되면 값을 모아서 튜플로 변환
def args(*args):
print(args)
args(1, 2, 3, 4, 5)
def add(*num):
result = 0
for i in num:
result += i
return result
print(add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
def profile(name, age, *food):
print(name, age, food)
profile("Mr.kim", 29, "kimchi", "Pizza", "chicken")
(1, 2, 3, 4, 5)
55
Mr.kim 29 ('kimchi', 'Pizza', 'chicken')
가변 키워드 매개변수
- 매개변수의 이름을 따로 지정하지않고 사용
- 함수를 호출할 때 인자에 이름을 지정해서 호출하면 이름과 값이 딕셔너리 형태로 반환
def keyword_args(**kwargs):
print(kwargs)
keyword_args(a = 3, b = 10, c = "A", d = "B")
def args_kwargs(*args, **kwargs):
print(args, kwargs)
args_kwargs(1, 2, 3, c = "A", d = "B")
{'a': 3, 'b': 10, 'c': 'A', 'd': 'B'}
(1, 2, 3) {'c': 'A', 'd': 'B'}
지역변수와 전역변수
var = "Global var"
def var_test():
var = "region variable"
return var
print(var)
print(var_test())
def func1():
global var # global: 함수 내에서 전역변수를 사용하기 위한 예약어
var = "a"
print(var)
func1()
def func2():
print(var)
func2()
Global var
region variable
a
a
내부 함수
- 함수안에 함수가 존재하는 구조
- 내부 함수는 외부에서 호출 불가
def func1(a, b):
def func2(num1, num2):
return num1+num2
return func2(a, b)
print(func1(10, 20))
# 1. func1(a, b)에 10, 20이 할당
# 2. func2(num1, num2)에 10, 20이 할당
# 3. func2()함수를 호출하면 10, 20이 더해짐
# 4. func1()함수의 return 값으로 func2()함수 호출
# 5. 30출력
30
재귀 함수
- 함수가 자기 자신을 다시 호출하는 함수
def count(n):
if n >= 1:
print(n)
count(n-1)
else:
pass
count(10)
def factorial(n):
if n > 1:
return n * factorial(n-1)
else:
return True
print(factorial(5))
10
9
8
7
6
5
4
3
2
1
120
댓글남기기