1. 함수의 정의
- 정의 시 최초에
def
키워드를 사용한다. argument
를 정의한다. (함수에 입력으로 전달하는 값을 의미,argument
또는parameter
라고 한다.):
(콜론) → 함수 역시 코드 블록이기 때문에 콜론(:
) 필요body
(함수의 구현 부분, 함수 역시 코드 블록이기 때문에 들여쓰기 된 부분까지 함수의 코드블록으로 인지 함)- 함수를 호출한 코드(caller)로 함수가 해당 기능을 수행하고 완료된 값(output)을 전달하기 위해
return
키워드 사용 - 즉,
return
이후에 오는 값을 caller로 전달한다.
- 함수를 호출한 코드(caller)로 함수가 해당 기능을 수행하고 완료된 값(output)을 전달하기 위해
- 함수 네이밍의 중요성
- 어떤 기능을 하는 함수인지 이름으로 최대한 나타낼 수 있게 해야한다.
# <in>
def add(x, y):
n = x + y
return n
c = add(30, 300)
print(c)
c
# <out>
330
- parmeter (argument) 인자
- 함수에 전달되는 입력(
input
) - 입력이 필요하지 않을 수도, 1개의 입력만 있을 수도, 여러개의 입력이 존재할 수도 있다.
- 파라미터로는
int
,string
,float
,boolean
,list
,dict
등등 어떤 파이썬 객체도 전달이 가능하다. - 심지어, 함수도 함수의 파라미터로 전달 가능
- python의 경우, 타입 명시가 없기 때문에, 함수 생성 시,의도된 파라미터의 타입에 맞게 입력을 전달하는 것이 중요하다.
- 또한 파라미터를 전달할 때, 정의된 순서에 따라 값을 전달하는 것이 중요하다.
- Default parameter (기본 인자)
- 함수의 파라미터에 기본값 지정 가능
- 파라미터를 명시하지 않을 경우, 지정된 기본값으로 대체
# <in>
def add(x, y=10, z=5):
a = x + y + z
return a
add(10, 1, 2) # x=10, y=1, z=2로 파라미터를 받는다.
add(10) # default parameter(기본값)을 y=10, z=5 대체한다.
# <out>
25
- 기본 파라미터의 다른 예
print
함수sep
,end
,fild
등 여러 기본 파라미터를 가진다.
# <in>
print(1, 2, 3, sep = '!', end = '%%%')
print(2, 3, 4, sep = 'p')
# <out>
1!2!3%%%2p3p4
Default parameter 사용 시 주의 점
- 디폴트 파라미터 뒤에는 일반 파라미터가 위치할 수 없다.
# 옳은 예
def test(a,b,c=1):
def test(a,b=1,c=3):
def test(a=1,b=1,c=3):
# 올바르지 않은 예
def test(a, b=1, c):
def test(a=1,b,c):
def test(a=1,b=1,c):
- keyword parameter (키워드 파라미터)
- 파이썬의 경우, 파라미터의 값을 전달할 때, 파라미터의 이름을 명시하여 전달 가능
- 파라미터 이름을 사용하지 않을 경우, 기본적으로 순서에 맞게 전달한다.
# <in>
def test(x, y, z):
a = x + y + z
return a
test(x =10, y =50, z =3)
# <out>
63
- return (리턴)
- 기본적으로 함수의 종료를 명시한다.
return
옆에 값이나 수식이 있다면 해당 값을 호출자(caller)에게 반환(전달)return
만 존재하면None
반환return
이 없는 경우, 기본적으로 함수 코드 블록이 종료되면 종료로 간주, 이때도None
반환
# <in>
def weird_multiply(x, y):
if x > 10:
return x * y
print(x + y)
return(x + 2) * y
weird_multiply(8, 5)
# <out>
13
50
# <in>
# return이 없는 경우
def weird_multiply(x, y):
if x > 10:
return x * y
print(x + y) # 리턴은 함수를 종료시키므로 이 함수는 의미가 없다.
c = weird_multiply(2, 5)
print(c)
# <out>
None
- multiple return (복수 값 반환)
tuple
을 반환하여 복수개의 값을 리턴할 수 있다.
# <in>
def add_mul(x, y):
s = x + y
m = x * y
return s, m
c = add_mul(20, 3)
print(c)
print(type(c))
# <out>
(23, 60)
<class 'tuple'>
- variable scope (변수의 범위)
- 변수가 참조 가능한 코드상의 범위를 명시
- 함수내의 변수는 자신이 속한 코드 블록이 종료되면 소멸됨
- 이렇게 특정 코드 블록에서 선언된 변수를 지역변수(local varibale) 이라고 함
- 반대로 가장 상단에서 정의되어 프로그램 종료 전까지 유지되는 변수를 전역변수(global variable) 이라고 함
- 같은 이름의 지역변수와 전역변수가 존재할 경우, 지역변수의 우선순위가 더 높음
# <in>
num1 = 10 # global 변수
num2 = 30 # global 변수
def test(num1, num2):
print(num1, num2)
return num1 + num2
test(30, 40)
print(num1, num2)
# <out>
30 40
10 30
- variable length argument (가변길이 인자)
- 전달되는 파라미터의 개수가 고정적이지 않은 경우에 사용
e.g)
print
함수format
함수
*args, **kwargs
**kwargs
: 파라미터를 딕셔너리 형태로 전달(네임드 파라미터)*args
: 파라미터를 튜플의 형태로 전달
# <in>
def test(*x):
for item in x:
print(item)
test(10,20,30,40,50,60) # 변수를 튜플로 받음
test(10,20,30,40,50,60,70,80) # 변수를 튜플로 받음
# <out>
10
20
30
40
50
60
10
20
30
40
50
60
70
80
# <in>
def test(*args): #arguments
for item in args:
print(item)
test(10, 30, 40, 50, 60, 70)
# <out>
10
30
40
50
60
70
- 문자열 포맷 함수
- 여러가지 값과 포맷을 이용하여 문자열을 정의할 수 있는 함수
{}
placeholder를 문자열 내에 위치 시킨 후, 해당 위치에format
함수로 전달된 값으로 대체하여 문자열 생성- 포맷 구성은 다음 링크를 참조하자
PyFormat Using % and .format() for great good!
# <in>
a = '오늘 온도: {tommorw_temp}도, 강수확률은: {tommorw_prob}%'.format(tommorw_temp =20, tommorw_prob = 50)
print(a)
# <out>
오늘 온도: 20도, 강수확률은: 50%
'python > 파이썬 기본' 카테고리의 다른 글
10. 클래스와 인스턴스 (0) | 2023.02.13 |
---|---|
9. lambda 함수 (0) | 2023.02.13 |
7. 반복문 for문 (0) | 2023.02.11 |
6. 반복문 while문 (0) | 2023.02.11 |
5. 조건문 (if, elif, else) (0) | 2023.02.11 |