Blair  - Soul Eater [파이썬 개념] 함수 - 정의, 호출, 매개변수

• programming language/python

[파이썬 개념] 함수 - 정의, 호출, 매개변수

oujin 2022. 7. 13. 17:29
728x90

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

 

 

 

 

 

출처: 예제 중심 파이썬 입문

728x90