파이썬 함수 사용법




전 강좌에 이어 여러가지 함수 쓰임새를 소개 하겠다.


이번엔 여러 인자값을 받는 함수에 대해 설명 하겠다.


여러 인자를 받는 함수

더하기 함수 예제

==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-

def PrintAllValue(*args) :

    print "start"

    for i in args :

        print i

    print "end"

PrintAllValue(6,7)

PrintAllValue(1,2,3)


==========================================================

결과 :  

start

6

7

end

start

1

2

3

end

==========================================================


위와 같이 함수에 인자를 몇개를 줘야 할지 모를때


함수 인자 부분에 *변수명 즉 


def 함수명(*인자명) 으로 정의 하면 인자 여러 인자를 받아서 처리 할 수 있다.



함수의 인자에 초기 값을 설정하여 사용자가 함수 호출 시 인자를 넣지 않아도 동작을 

하도록 설정 할 수 있다.


인자 초기 값 설정

==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-

def PrintValue(a=1,b=2,c=3) :

    print "a=%d,b=%d,c=%d"%(a,b,c)


PrintValue()

PrintValue(4)

PrintValue(4,5)

PrintValue(4,5,6)


==========================================================

결과 :  

a=1,b=2,c=3

a=4,b=2,c=3

a=4,b=5,c=3

a=4,b=5,c=6

==========================================================


총 함수를 4번 호출 한다.


첫번째 함수( PrintValue() )는 인자 값을 넣지 않아 함수의 초기값


def PrintValue(a=1,b=2,c=3) 이 그대로 출력 이 되었다.


우선 결과를 보면


a=1,b=2,c=3   ===========> PrintValue()        인자 값이 없어 초기에 설정된 a=1,b=2,c=3 출력

a=4,b=2,c=3   ===========> PrintValue(4)       첫 번째 인자만 넣어서 a가 4로 들어가 a=4,b=2,c=3 출력

a=4,b=5,c=3   ===========> PrintValue(4,5)

a=4,b=5,c=6   ===========> PrintValue(4,5,6)   3개의 인자값을 다 넣어서 초기에 설정된 값이 아닌 a=4,b=5,c=6 출력



퀴즈를 풀어보자

==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-

val = 0

def globalexam1(val) :

    val = val + 1


globalexam1(val)

print val


==========================================================

결과 :  

?? 풀어보자..

==========================================================


결과 값이 무엇일까?


힌트는 print val에 대한 출력 값이다.


....


함수 안에서 val = val + 1을 하며 val의 초기 값은 0이다. 


그럼 print 의 결과 값은 0 + 1 을 더한 값이니 1일 것이라 생각 들겟지만


정답은 0이다.


왜그럴까? 함수 밖에 변수 명과 함수 안의 변수 명이 같더라도 파이썬에서는


다른 값으로 인식한다. 


즉 함수 안에 변수 값과 함수 밖의 변수 명이 같아도 서로 다른 값이다.


val = val + 1 계산을 해도 해당 변수는 함수가 종료 되면 사라지는 변수 값이다.


그래서 함수 밖의 val 값은 어떠한 계산이 되지 않는다.


그럼 함수 밖의 값을 함수 안에서 사용하려면 어떻게 할까?



global의 사용법

==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-

val = 0

def globalexam3() :

    global val

    val = val + 1


val = 0

globalexam3()

print val

==========================================================

결과 :  

1

==========================================================


함수 안에서 함수 밖의 변수를 사용하고 싶으면 global이라는 예약어를 사용 하면 된다.


함수 안에서 계산 되었지만 global로 선언 되어서 출력값이 0이 아닌 1로 되었다.


이전 함수 설명 가기 ====> click

반응형

'프로그램 > Python' 카테고리의 다른 글

[Python]파일(File) 사용법  (0) 2016.09.16
[Python]사용자 입력  (0) 2016.09.16
[Python] 함수 (2)  (0) 2016.09.11
[Python] 함수 (1)  (0) 2016.09.11
[Python] 제어문 for  (0) 2016.09.11

+ Recent posts