ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python_function
    Programming/_Python 2023. 6. 21. 14:09

    1. function

     함수는 우리가 반복적으로 사용되는 코드를 하나로 묶고 어떤 입력값을 넣었을때, 결과를 출력해주는것을 생각하면 된다.

    Python에서 함수의 구조는 다음과 같다.

    def add(a: int, b: int) -> int: # int형의 a와 b를 입력값으로 넣어 int를 출력한다는 의미
        result: int = a+b
        return result
        
    def add(a, b):
        result = a+b
        return result

    위 함수의 이름은 add이고 입력으로 2개의 값을 받으면, 2개를 더한 값 1개를 출력한다는 의미다.

    위와 아래의 add function은 같은 코드이다.아래와 같이 작성해도 큰 상관은 없지만, 위와 같이 쓴 이유는 코드가 지금보다 더 복잡해지면 다른 사람이 코드를 읽거나 추후 내가 작성한 코드를 수정할 때, 조금 더 편하게 보기 위해서 위와 같이 작성한다.

     

    여기서 매개변수(parameter)와 인수(arguments)라는 용어가 나오는데, 매개변수는 함수에서 입력으로 전달된 값을 받는 변수, 인수는 함수를 호출할 때 전달하는 입력값을 이야기한다.

    def add(a: int, b: int) -> int: # a, b는 매개변수
        result: int = a+b
        return result
    
    print(add(1, 5)) # 1, 5는 인수

     

    add와 같은 함수를 일반함수라고 부르며 입력값이 없는 함수, 결과값이 없는 함수, 둘 다 없는 함수들이 있다.

    - 입력값이 없는 함수

    def test_print() -> str:
        return 'test python!!'
    
    print(test_print()) # test python!!

    - 결과값이 없는 함수

    def test_print(a: int, b: int):
        print('a: %d, b: %d 이다.' % (a, b))
    
    test_print(1, 2) # a: 1, b: 2 이다.

     

    - 둘 다 없는 함수

    def test_print():
        print('test python!!')
    
    test_print() # test python!!

     

    - 가변 입력값을 받는 함수

     내가 만든 함수의 입력값의 개수가 정해진 것이 아닌, 여러개의 입력값을 받아야 하는 경우도 있다. 만약 100개의 입력 값을 받는데 이를 모두 매개변수화를 한다면, 너무나도 불편할 것이다. Python에서는 *args를 사용하여 함수가 여러가지 매개변수를 받을 수 있게 설정해주도록 도움을 준다.

    def test_add(*args: int) -> int:
        result: int = 0
        for num in args:
            result += num
        return result
    
    print(test_add(1))       # 1
    print(test_add(1,2))     # 3
    print(test_add(1,2,3))   # 6
    print(test_add(1,2,3,4)) # 10

    *args의 args는 arguments의 약자로 매개변수를 뜻하는 단어이다. 다른 단어로 대체를 해도 문제가 없으며 args는 다른 프로그래밍 언어에서도 볼 수 있다.

    args와 함께 kwargs도 볼 수 있는데, 이는 키워드 파라미터라고 한다. 키워드 파라미터는 **kwargs로 표시된다.

    def test_kwagrs(**kwargs):
        return kwargs
    
    print(test_kwagrs(a=1, name='jack', value=3)) #  {'a': 1, 'name': 'jack', 'value': 3}

    출력된 결과를 보면 key와 value 형태의 딕셔너리 형태로 만들어져서 출력되는 것을 볼 수 있다.

     

    - 지역변수(local)와 전역변수(global)

     함수 내부에서 사용된 변수를 함수 바깥에서도 쓸 수 있을까? 답을 이야기하자면 쓸 수 없다. 예시를 보면 다음과 같다.

    a: int = 1 # 전역변수
    
    def test_variable():
        a: int = 2 # 지역변수
        print('test_variable: %d', a)
    
    test_variable() # test_variable: %d 2
    print('value_a?: %d', a) # value_a?: %d 1

    해당 예제를 보면 전역변수 a=1이 선언되고 test_variable() 함수의 지역변수 a=2로 선언이 되었지만, 출력을 해봤을 때 함수 내부에서 선언된 변수의 값이 함수 밖의 a에 영향을 미치지 않는 것을 볼 수 있다.

    만약 함수 내부의 변수 값을 사용하고 싶다면, 내부 변수의 값을 return하거나 global을 사용하여 전역변수로 지정해주는 방법이 있다.

    1. return

    a: int = 1
    
    def test_variable() -> int:
        a: int = 2
        return a
    
    a = test_variable()
    print('value_a?: %d', a) # value_a?: %d 2

     

    2. global

    a: int = 1
    
    def test_variable():
        global a
        a += 1
    
    test_variable()
    print('value_a?: %d', a) # value_a?: %d 2

    그러나 전역변수를 사용하는 방식들은 추천하지 않는다. 그 이유는 프로그램이 복잡해질수록 외부 변수에 종속적인 함수가 좋지 않은 영향을 받을 수 있기 때문이다.

    'Programming > _Python' 카테고리의 다른 글

    Python_lambda  (0) 2023.06.22
    Python_upper_lower  (0) 2023.06.15
    Python?  (0) 2023.06.15
Designed by Tistory.