Program/파이썬

[Python] 함수(Function)

사막여유 2023. 1. 9. 08:08
728x90

프로그램에서의 함수는 '기능' 을 의미한다.

함수를 사용하는 중요한 이유는 재사용성 때문이다.
즉, 똑같은 구조의 코드가 반복되는 것을 피하기 위함이다.

예를들어 아래와같은 함수를 만든다고 한다면

def add ( a, b ) 라는 add라는 이름과 a,b 의 매개변수로 이루어진 함수를 만들 수 있다.

또한 파이썬이기 때문에 포맷은 아래와 같다.

def add ( a, b ) :
    c = a + b
    return c

 * 이 전 글에서도 설명했듯이 문자열도 사용이 가능하다.
   Ex) add ( 'a' , 'b' ) = 'ab'

 

사칙연산에 관련된 함수를 모두 만들어보면
def sub ( a, b ) : 
    return a -  b

def mul( a , b) :
    return a * b

def div ( a, b ) :
    return a / b

그런데 만약 나눗셈에서 분모에 0이 들어가면 프로그램이 처리할 수 없기 때문에 함수에서 예외처리를 해줘야한다.

def div( a , b ) :
    if ( b == 0 ) :
        return 0
    else :
        return a / b

 

함수에는 크게 4가지의 경우의 수로 나눠지게 되는데 아래와 같다.

1. 함수 파라메터와 리턴이 모두 존재하는 경우
2. 함수 파라메타는 없고 리턴만 존재하는 경우
3. 함수 파라메타는 있는데 리턴이 없는 경우
4. 함수 파라메타도 없고 리턴도 없는 경우

 

* 파라메타의 개수를 모를때는 어떻게 해야할까?
    def add_many ( *args ) :
        print ( args, type ( args ) )
    위와같이 변수앞에 *를 붙여 여러개의 파라메타를 받아서 튜플로 변환시켜 입력해줄 수 있다.
    여기 이 전에 배운 for문을 사용해서 sum 함수를 만들어보면
   
    def sum ( *args ):
        result = 0
        for i in args : 
            result  = result + i
        return result

 

Fucntion Call을 할 때의 주의사항

1.mutalbe(변형가능한) data type을 파라메타로 넘겨주는 경우에는 내부 데이터가 바뀔 수 있음을 인지
2. immutable data type은 내부 데이터가 바뀌지 않음을 인지

 

즉, 알기쉬운 예로 설명한다면 파라메타에 Mutable 변수를 넘겨줄 때는 파라메타의 원본이 넘어가서 바뀐다고 볼 수 있다.
C++로 말하자면 포인터인셈이다.
해당 변수가 갖고 있는 메모리값을 그대로 넘겨주어 변수 자체를 변형시켜 버리는 것이다.
하지만 Immutable 변수 ( Tuples, int, float, bool ... )은 바뀌지 않는다.

def change_list ( L ) :
    L[0] = 7
    return L

L = [ 1,2,3 ]
L2 = change_list (L)
print(L)
print(L2)

라는 예시가 있는데 이런 코드를 실행한 결과는 어떻게 나올까?
위에서 설명했던 대로 파라메타에 있는 변수는 메모리값이 그대로 넘어가기 때문에
L = [7,2,3]
L2 = [7,2,3] 이라는 결과값이 나오게 된다.

728x90

'Program > 파이썬' 카테고리의 다른 글

[Python] Pandas  (0) 2023.01.17
[Python] 웹 환경 이해  (0) 2023.01.16
[Python] 자료형 함수  (0) 2023.01.07
[Python] 반복문 ( for )  (0) 2023.01.07
[Python] 반복문 ( While )  (0) 2023.01.07