1. 함수 정의
def 함수명(매개변수) :
함수가 실행할 명령1
함수가 실행할 명령2
...
2. 함수 호출
함수명(매개변수)
3.1 매개변수(Parameter)
정의된 함수명의 ()안에 들어가며, 함수 호출시에 필요한 데이터나 변수를 전달받는데 사용되는 변수이다.
def 함수명(매개변수1, 매개변수2) :
함수가 실행할 명령1
함수가 실행할 명령2
ex) 매개변수가 1개 사용
def holljjack(num) :
#함수 정의, 매개변수 num *참고*: 함수를 호출할 할때 꼭 num을 사용하지 않아도 된다.
if num % 2 == 0 :
print('%d은(는) 짝수이다.' % num)
else :
print('%d은(는) 홀수이다.' % num)
holljjack(7)
#함수 호출
holljjack(16)
#함수 호출
7은(는) 홀수이다.
16은(는) 짝수이다.
ex) 매개변수가 여러개 사용
def favorate_color(name, color, amount) :
if (amount == 1) :
print('%s님은 %s을 좋아하지 않습니다.' % (name, color))
elif (amount == 2) :
print('%s님은 %s을 조금 좋아합니다.' % (name, color))
else :
print('%s님은 %s을 매우 좋아합니다.' % (name, color))
favorate_color('김지영','빨강' ,1)
favorate_color('홍채영','노랑' ,2)
favorate_color('진소진', '파랑',3)
김지영님은 빨강을 좋아하지 않습니다.
홍채영님은 노랑을 조금 좋아합니다.
진소진님은 파랑을 매우 좋아합니다.
ex) 매개변수의 개수를 정하지 않고 호출하는 함수에 따라 매개변수의 수를 결정, *사용
def average(*scores) :
#함수 정의
sum = 0
for i in range(len(scores)) :
sum += scores[i]
avg = sum/len(scores)
print('%d과목의 평균 : %.2f' % (len(scores), avg))
average(80,90 ,100 )
#전달되는 매개변수의 개수가 다름
average(75,80 , 94, 78)
#전달되는 매개변수의 개수가 다름
average(80, 73, 76, 86,82)
#전달되는 매개변수의 개수가 다름
3과목의 평균 : 90.00
4과목의 평균 : 81.75
5과목의 평균 : 79.40
3.2 매개변수의 변수 값 전달 방식 - 전역변수와 지역변수
1) 값에 의한 호출 (call by value)
2) 래퍼런스에 의한 호출(call by reference)
º 파이썬에서는 함수 호출 시 전달되는 값이나 변수의 데이터 형에 따라 자동으로 위의 두 가지 방식 중 하나가 선택된다.
파이썬의 이러한 매개변수 전달 방식을 할당에 의한 호출(Call by Assignment) 이라 한다.
º 메인 루틴에서 사용되는 변수를 전역 변수(Global Variable) 라고 하고
서브 루틴, 즉 호출된 함수에서 사용되는 변수를 지역 변수(Local Variable) 라고 한다.
º 내장 함수 id() : 특정 변수(또는 객체)가 저장된 메모리 공간의 주소를 나타내는 아이디를 출력.
# 서브 루틴 : func() 함수
def func(x) :
x = 100
print('func() : x = ', x, ', id =', id(x))
# 메인 루틴
x = 10
print('메인 : x = ', x, ', id =',id(x) )
func(x)
print('메인2 : x = ',x, ', id =',id(x) )
메인 : x = 10 , id = 140729341651008
func() : x = 100 , id = 140729341653888
메인2 : x = 10 , id = 140729341651008
3.3 매개변수의 변수 값 전달 방식 - 리스트를 매개 변수로 전달
파이썬에서는 함수 호출 시 메인 루틴의 변수 데이터 형에 의한 호출이 달라진다.
정수형, 실수형, 문자열, 튜플 : 자동으로 값에 의한 호출
변수 리스트, 딕셔너리 (데이터 형) : 레퍼런스에 의한 호출
# 서브 루틴 : func() 함수
def func(x) :
x[0] = 100
print('func() : x = ', x, ', id =', id(x))
# 메인 루틴
x = [1, 2, 3]
print('메인 : x = ', x, ', id =', id(x))
func(x)
print('메인 : x = ', x, ', id =', id(x))
메인 : x = [1, 2, 3] , id = 1569700489216
func() : x = [100, 2, 3] , id = 1569700489216
메인2 : x = [100, 2, 3] , id = 1569700489216
4. 함수 값의 반환 - return
def circle_area(r) :
area = r * r * 3.14
return area
radius = int(input('원의 반지름을 입력하세요 : '))
result = circle_area(radius)
print('반지름 : %d, 원의 면적 : %.2f' % (radius, result))
원의 반지름을 입력하세요 : 10
반지름 : 10, 원의 면적 : 314.00
5. 람다 함수(Lambda Function)
lambda 매개변수 1, 매개변수2, ... : 수식
x = lambda x : x**2
print(x(5))
print(x(10))
25
100
출처: 예제 중심 파이썬 입문
'• programming language > python' 카테고리의 다른 글
[파이썬 연습문제] 파이썬 문자열 역순 출력 (0) | 2022.07.14 |
---|---|
[파이썬 개념] 파일 열기, 파일쓰기, 파일읽기, 인코딩 (0) | 2022.07.14 |
[파이썬 연습문제] for문 딕셔너리- 조건에 맞는 기온의 요일 출력하기, 평균구하기 (0) | 2022.07.13 |
[파이썬 연습문제] 딕셔너리 for문 - 가장 작은 값 찾기 (0) | 2022.07.13 |
[파이썬 연습문제] 파이썬 for문 딕셔너리 (키출력, 값출력, 키 값 출력) (0) | 2022.07.13 |