티스토리 뷰

Python/Python

[Python]함수 만들고 호출하기

Vagabund.Gni 2023. 2. 5. 22:43
728x90
반응형

목차

     

    Before Init: Function vs. Method

     

     

    결론부터 말하면 둘은 위와 같은 관계이다.

     

    나도 아직 조금 헷갈리는데, 한 마디로 구분하자면 클래스 내에 선언된 함수를 메서드라고 부르는듯하다.

     

    그 말은 뒤집어 말하면 파이썬의 함수는 자바와는 다르게 클래스 없이 독립적으로 선언할 수 있다는 말이 되며,

     

    실제로 어제 작은 기능을 하나 구현해 보면서 느껴보기도 했다.

     

    클래스에 소속되어 있는가의 유무에 따라 사용 코드에도 아래와 같은 차이가 발생하며,

    print() # 함수
    
    a.create() # 메서드

    따지고 들자면 메서드도 함수이기 때문에 그냥 함수라 지칭해도 틀린 표현은 아니게 된다.

     

    그럼 본론으로 들어가자.

     

    Python Functions

     

    Creating

     

    파이썬의 함수 정의는 매우 쉽고 간단하다.

     

    신경 써야 할 일이 거의 없게 느껴질 정도다.

     

    예를 들자면 이런 방식으로 만든다.

    def creating_function(a, b):
        c = a + b
        return c
    
    
    def creating_function(a, b):
        return a + b
        
    # 두 함수는 동일하게 동작

    이게 끝이다. 접근 지시자도 반환타입도 심지어 매개변수의 자료형도 명시하지 않는다.

     

    함수 내에서 실행될 로직과 반환값(없어도 가능)만 적어주면 된다.

     

    이것만으로도 방금 생성한 함수의 재사용성이 몇 배는 커지게 된다. 굉장한 객체지향적 사고이다.

     

    추가로 파이썬에선 camelCase가 아닌 snake_case를 사용한다.

     

    또한 폴더 명은 첫 글자를 대문자로, 파일의 이름은 소문자로 적는다.

     

    Calling

     

    들어가기 전에, 파이썬 함수 호출의 가장 중요한 점은

     

    반드시 함수의 선언이 호출보다 앞서야 한다는 것이다.

     

    이것만 잘 지키면 함수의 호출 역시 간단하다. 이름과 아규먼트를 적어주면 된다.

    def creating_function(a, b):
        return a + b
    
    
    print(creating_function(1, 2))  # 3
    print(creating_function([1, 2], [3, 4]))  # [1, 2, 3, 4]
    print(creating_function([1, 2], 3))  # Error
    print(creating_function(1))  # Error

    위에 잠깐 언급했듯이 참조변수의 타입을 적지 않고 파이썬이 동적으로 할당하는 덕분에,

     

    아규먼트 타입만 잘 맞춰서 넣는다면 여러 타입에서 함수를 재사용할 수 있다.

     

    Parameters, Arguments && Return Values

     

    영어로 된 자료를 읽다 보니까 파이썬에선 파라미터와 아규먼트를 구분하는 것 같다.

     

    중요한지 그렇지 않은지 나는 잘 모르니까 일단 써두기.

     

    • Parameters - 함수를 정의할 때 사용하는, 소괄호 안에 있는 변수
    • Argument - 함수를 호출할 때, 함수에게 전달하는 값

    파라미터를 넣어 함수를 정의하는 것은 위에서 봤으니, 내 생각에 짚고 넘어가면 좋을 것 같은 기능

     

    몇 가지만 더 적어보자.

     

    파이썬에선 파라미터에 기본값을 할당해, 입력이 들어오지 않을 시 사용할 수 있다.

    def creating_function(a, b=1):
        return a + b
    
    
    print(creating_function(1))  # 2

    위와 같은 식이다.

     

    추가로 기본값이 있는 파라미터는 언제나 그렇지 않은 파라미터의 뒤에 위치해야 한다.

    def creating_function(a, b=1):
        return a + b
    
    
    def creating_function(a=1, b): # Error
        return a + b

     

    또한 파이썬에서는 아규먼트 입력 시 파라미터의 이름을 명시해 순서를 바꿔 입력할 수 있다.

    def creating_function(a, b):
        return a % b
    
    
    print(creating_function(1, 2))  # 1
    print(creating_function(b=1, a=2))  # 0
    print(creating_function(1, b=2))  # 1
    print(creating_function(1, a=2))  # Error

    파라미터 이름을 모두 명시하지 않은 경우, 명시한 아규먼트가 뒤쪽에 위치해야 한다.

     

    그리고 마지막 줄처럼 호출하면 이름이 없는 첫 번째 인자가 a로 들어가기 때문에 인수가 모자라다는 에러가 뜨게 된다.

     

    특이하게도 파이썬의 함수는 인자의 개수를 정하지 않고도 생성이 가능한데,

     

    아직 어디에 써야 좋을지 느낌은 오지 않지만 우선 적어놓는다.

    def creating_function(*a): # 튜플로 저장
        return a 
        
    
    def creating_function(**a): # 딕셔너리로 저장
        return a

    마지막으로 return값에 의해 반환되는 반환값의 경우,

     

    두 번 이상 선언될 수는 있으나 첫 번째 return에서 반환하고 종료하게 된다.

    def creating_function(a, b):
        return a + b
        return a - b
        return a * b
    
    
    print(creating_function(1, 2))  # 3

    오늘도 이렇게 파이썬과 조금 더 가까워졌다.

     

    지금 진행하고 있는 프로젝트에 파이썬을 끼워 넣으려 노력 중이긴 한데,

     

    생각처럼 내 실력이 따라주지 않아 아쉽다.

     

    어쨌거나 파이썬 함수에 대한 소개, 끝!

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/06   »
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    글 보관함