본문 바로가기
개발 공부

Python_6

by brandnewthinker 2023. 2. 12.
반응형

사용자 정의 함수

  • 함수 기본 구조

    • 선언과 호출(define&call)
    • 입력(Input)
    • 범위(Scope)
    • 결과값(Output)

선언과 호출

  • def 키워드 활용

  • 함수는 호출되면 코드를 실행하고 return 값을 반환하며 종료된다.

      num1 = 0
      num2 = 1
    
      def func1(a, b):
          return a + b
    
      def func2(a, b):
          return a - b
    
      def func3(a, b):
          return func1(a, 5) + func2(5, b)
    
      result = fuc3(num1, num2)
      print(result) # 9

결과값

  • return

    • 함수는 반드시 값을 하나만 return한다.

    • return문을 한번만 사용하면서 두 개 이상의 값을 반환하는 방법 => 튜플

        def minus_and_product(x, y):
            return x - y, x * y
        minus_and_product(4, 5) # (-1, 20)

입력

  • Parameter: 함수를 실행할 때, 함수 내부에서 사용되는 식별자

  • Argument: 함수를 호출할 때, 넣어주는 값

      def function(n): # parameter: n
          return 1
    
      function(0)   # argument: 0
  • Argument

    • positional arguments

      • 위치에 따라 함수 내에 전달됨
          def add(x, y):     
              return x + y
          add(2, 3)
    • keywords arguments

      • 직접 변수의 이름으로 특정 Argument를 전달할 수 있음
      • 이후 Positional Argument를 활용할 수 없음
          def add(x, y):     
              return x + y
          add(x=2, y=5)
          add(2, y=5)
    • Default Arguments Values

      • 기본값을 지정하여 함수 호출 시 argument 값을 설정하지 않도록 함
          def add(x, y=0):    
              return x + y
          add(2)
    • 정해지지 않은 개수의 arguments

      • 여러 개의 Positional Argument를 하나의 필수 parameter로 받아서 사용
      • Argument들은 튜플로 묶여 처리되며, parameter에 *을 붙여 표현
          def add(*args):          
              for arg in args:     
                  print(arg)
          add(2)
          add(2, 3, 4, 5)
    • 정해지지 않은 개수의 keywords arguments

      • 함수가 임의의 개수 Argument를 Keyword Argument로 호출될 수 있도록 지정
      • Argument들은 딕셔너리로 묶여 처리되며, parameter에 **를 붙여 표현
          def family(**kwargs):
              for ket, value in kwargs:
                  print(key, ":", value)
          family(father='John', mother='Jane', me='John Jr.')

범위(Scope)

  • 함수는 코드 내부에 local scope를 생성하며, 그 외의 공간인 global scope로 구분

  • scope

    • global scope: 코드 어디에서든 참조할 수 있는 공간
    • local scope: 함수가 만든 scope. 함수 내부에서만 참조 가능
  • variable

    • global variable: global scope에 정의된 변수
    • local variable: local scope에 정의된 변수
  • 객체 수명주기(lifecycle)

    • built-in scope

      • 파이썬이 실행된 이후부터 영원히 유지
    • global scope

      • 모듈이 호출된 시점 이후 혹은 인터프리터가 끝날 때까지 유지
    • local scope

      • 함수가 호출될 때 생성되고, 함수가 종료될 때까지 유지
      def func():
        a = 20
        print('local', a)
      
      func()
      print('global', a)
      # local 20 => a는 local scope에서만 존재
  • 함수 내에서는 바깥 Scope의 변수에 접근 가능하나 수정은 할 수 없음

  • global 문

    • 현재 코드 블록 전체에 적용되며, 나열된 식별자(이름)이 global variable 임을 나타냄

    • global에 나열된 이름은 같은 코드 블록에서 global 앞에 등장할 수 없음

        a= 10
        def funcl():
            global a
            a = 3
      
        print(a)
        funcl()
        print(a)
      
        # 10
        # 3
    • Local scope에서 global 변수 값의 변경 ⇒ global 키워드를 사용하지 않으면, Local scope에 a변수가 생성됨

반응형

'개발 공부' 카테고리의 다른 글

Python_7-2  (0) 2023.02.19
Python_7-1  (0) 2023.02.19
Python_5  (0) 2023.02.12
Python_4  (0) 2023.02.06
Python_3  (0) 2023.02.06

댓글