ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 함수 심화
    Python 2022. 7. 6. 11:00

    재귀함수

    # 자기 스스로 호출하는 함수
    
    def func(count):
      if count > 0:
        print(count, '현재')
        func(count - 1)
      print('결과', count)
    
    func(10)
    # 재귀 호출의 단계가 깊어질수록 메모리를 추가적으로 사용하므로 종료조건을 분명히 해야 한다.
    # 호출할 때 메모리를 사용한다. 메모리를 다른 말로는 Stack이라고도 한다. 
    # 이런 상황에서의 오류를 StackOverFlow라고 한다.
    # 재귀함수는 어쩔 수 없이 써야하는 부분이 아니라면 추천X
    
    def no_idea():
      print('나는 아무 생각이 없다.')
      print('왜냐하면 아무 생각이 없기 때문이다.')
      no_idea()
    
    no_idea()

     

    중첩함수

    # 함수 안에 정의된 함수
    # nonlocal과 global의 차이점을 알아보기
    # 변수 위치를 주의하자
    
    def func1(a):
      def func2():
        nonlocal a
        a += 1
        return a
      return func2()
    
    func1(2)

     

    lambda 함수

    # 이름이 없는 한 줄짜리 함수
    # lambda 인수 나열: 반환할 내용
    # 인수가 없으면 생략 가능
    # 람다함수는 다른 함수와 연계할 때 많이 사용한다.
    
    lambda x, y: x + y

    <function __main__.<lambda>>

    def run(func, x):
      print(func(x))
    
    run(lambda x: x + 1, 1)

     

    내장함수

    # 함수를 따로 정의하지 않아도 기본적으로 정의되어 있는 함수들
    
    # 절대값을 반환하는 함수
    # 최댓값을 반환하는 함수
    # 최솟값을 반환하는 함수
    # 자료형이 무엇인지 알려주는 함수
    # x의 y제곱을 반환하는 함수
    # 반복문에서 정수와 인덱스가 필요할 때 사용하는 함수
    # 리스트의 인덱스와 원소 값을 모두 생성
    # items()를 연상해주면 좋다.
    
    for index, x in enumerate(['a', 'b', 'c', 'd']):
      print(index)
      print(x)
    # zip(a, b)
    # 두 개의 리스트를 합쳐서 각 리스트 원소의 쌍을 원소로 가지는 하나의 리스트를 변환
    # 호출을 해야 값을 출력
    
    list1 = [1, 2, 3, 4]
    list2 = [5, 6, 7, 8]
    
    result = zip(list1, list2)
    list(result)
    for i, j in zip(list1, list2):
      print(i, j)
    # map(함수, 컬랙션)
    # lambda 함수와 많이 응용, 이것도 호출해야 한다.
    # 함수와 컬랙션(list, tuple 등)을 매개변수로 받아 컬렉션의 모든 데이터를 함수의 매개변수로 대입해서 결과를 리턴하는 함수
    
    map(lambda x: x + 1, [1, 2, 3, 4])
    
    for i in map(lambda x: x + 1, [1, 2, 3, 4]):
      print(i)
    # filter
    # 함수와 컬랙션을 매개변수로 받아 컬랙션의 모든 데이터를 함수의 매개변수로 대입하여 결과가 참인 멤버들을 변환하는 함수
    
    filter(lambda x: x % 2 == 0, [1, 2, 3, 4])
    
    for i in filter(lambda x: x % 2 == 0, [1, 2, 3, 4]):
      print(i)

    2

    4

    # def calc_many(choice, *args) 함수에서
    # choice가 sum이면 합한 결과를 구해서 return
    # choice가 mul이면 곱한 결과를 구해서 return
    
    
    def calc_many():
      
    # 결과 : 15
    print(calc_many('sum', 1, 2, 3, 4, 5))
    # 결과 : 120
    print(calc_many('mul', 1, 2, 3, 4, 5))

    'Python' 카테고리의 다른 글

    Python 환경 구축  (0) 2022.07.12
    Python 실습 (16)  (0) 2022.07.04
    Python 실습 (15)  (0) 2022.07.04
    Python 실습 (14)  (0) 2022.07.04
    Python 실습 (13)  (0) 2022.07.04

    댓글

Designed by Tistory.