함수(function)이란 어떤 일을 수행하는 코드의 덩어리, 또는 코드의 묶음이라고 표현할 수 있다.
def 함수 이름 (매개변수 #1 ...):
명령문 1
명령문2
return <반환값>
def: 'definition'의 줄임말로 함수의 정의를 시작한다는 의미이다.
함수 이름:
1) 소문자로 입력한다.
2) 띄어쓰기를 할 경우에는 _기호를 사용한다.
3) 작업을 나타내기 위해 동사, 명사를 함께 사용하는 경우가 많다.
4) 줄임말 대신 짧고 명료한 이름으로 정한다.
매개변수(parameter): 매개변수는 함수에서 입력값으로 사용하는 변수를 의미하며, 1개 이상의 값을 적을 수 있다.
명령문: 명령문은 반드시 들여쓰기한 후 코드를 입력해야 한다.
<함수가 변수를 호출하는 방식>
| 종류 | 설명 |
|---|---|
| 값에 의한 호출 | 함수에 인수를 넘길 때 값만 넘김, 함수 내부의 인수값 변경 시 호출된 변수에 영향을 주지 않음 |
| 참조 호출 | 함수에 인수를 넘길 때 메모리 주소를 넘김, 함수 내부의 인수값 변경 시 호출된 변수값도 변경됨 |
<변수의 사용 범위>
def test(t):
print(x)
t=20
print('In Function:', t)
x=10
test(x)
print('In Main:', x)
print('In Main:', t)
x=10은 전역 변수(global variable), t=20은 지역 변수(local variable)
10
In Function: 20
In Main : 10
Error발생
<재귀 함수>
def factorial(n):
if n==1:
return 1
else:
return n * factorial(n-1)
print(factorial(int(input("input Number for Factorial Calculation: '))))
def print_sth(my_name, your_name):
print('Hello{0}, My name is {1}'.format{your_name,my_name})
print_sth("Sungchul", "TEAMLAB")
print_sth(your_name="TEAMLAB", my_name="Sungchul")
Hello TEAMLAB, My name is Sungchul
Hello TEAMLAB, My name is Sungchul
def print_sth2(my_name, your_name = "TEAMLAB"):
print('Hello{0}, My name is {1}'.format{your_name,my_name})
print_sth2("Sungchul", "TEAMLAB")
print_sth2("Sungchul")
Hello TEAMLAB, My name is Sungchul
Hello TEAMLAB, My name is Sungchul
def asterisk_test(a, b, *args):
return a + b + sum(*args)
print(asterist_test(1,2,3,4,5))
15
def kwargs_test(**kwargs):
print(kwargs)
print("First value is {first}".format(**kwargs))
print("Second value is {Second}".format(**kwargs))
print("Third value is {Third}".format(**kwargs))
kwargs_test(first=3, second=4, third=5)
{first=3, second=4, third=5}
First value is 3
Second value is 4
Third value is 5