뮤트 개발일지

Python 함수 - 기본구조, 매개변수, local변수와 global변수, generator, yield 본문

Python

Python 함수 - 기본구조, 매개변수, local변수와 global변수, generator, yield

박뮤트 2021. 12. 19. 19:32

함수 기본 구조

def 함수이름(x1, x2, x3):

    문장1

    문장2

    return y

 

예)

def hello():

    print('hello')

 

def addition(a, b):

    return a+b

 

def add_and_multiple(a, b):

    return a+b, a*b


매개변수

def 함수이름 (x1, x2, x3):

    return y

여기서 x1, x2, x3과 같이 입력값을 매개변수라고 부른다.

 

매개변수의 기본값을 지정할 때

def addition(a=1, b=2):

    return a+b

- 위의 상황에서 addition(3)을 입력하면: 3+2 = 5 출력

- 위의 상황에서 addition(b=1)을 입력하면: 1+1 =2

*주의: addition(a=3,2)와 같은 표현은 불가능하다.

 

입력값이 몇 개가 될지 모를 때

예)

def func(*args):

    for i in args:

        print(i)

=> 매개변수 앞에 * 표시를 한다.

=> args에 들어간 인수들이 tuple형태로 변환되어 args라는 매개변수에 들어간다.

 

예)

def func(**kwargs):

    for i in kwargs:

        print(i)

=> 매개변수 앞에 ** 표시를 한다.

=> kwargs에 들어간 인수들이 딕셔너리 형태로 변환되어 kwargs라는 매개변수에 들어간다.

=> 이 때, 반드시 func(k1=v1, k2=v2)와 같은 형태로 매개변수 이름을 지정해야 한다.


local 변수와 global 변수

local 변수: 함수 안에서 만든 변수, 함수 안에서만 살다가 함수 코드가 실행 종료되면 변수도 같이 사라짐

global 변수: 함수 외부에서 만든 변수, 프로그램이 실행되어 있는 동안에 계속 살아있음

 

함수 내부에서 global 변수를 부르는 방법

a = 3

def f():

    global a

    a = a + 1

f()

 

or

 

def f():

    global a

    a = 1

    a = a+1

f()


generator와 yield

예)

def gen(n):

    while n > 0:

        yield n

        n = n-1

 

gen(10) 했을 때, 실행되지 않고

<generator object gen at 0x7f96d75e2ed0> 이 나온다.

 

list(gen(10))을 하면 그제서야 [10,9,8,7,6,5,4,3,2,1]이 나온다.

 

=> yield를 통해 생성된 값은 바로 계산되지 않고 호출 되었을 때 비로소 계산된다. lazy operation

'Python' 카테고리의 다른 글

Python 내장함수, 외장함수  (0) 2021.12.20
Python 예제) 재귀함수, 중첩함수, lambda함수  (0) 2021.12.20
Python 제어문 - while 문  (0) 2021.12.19
Python 제어문 - for 문  (0) 2021.12.19
Python 제어문 - if문  (0) 2021.12.19