ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5일차 - 함수와 람다
    AI 솔루션 개발자과정(Java, Python) 2022. 10. 14. 16:57

    함수 만들기.


        함수는 코드의 집합이다.
        함수를 사용하는 것을 함수를 호출한다고 표현한다.
        함수를 호출할 때는 괄호 내부에 여러가지 자료를 넣게 되는데, 이러한 자료를 매개변수(인수, 인자)라고 한다.
        함수를 호출해서 최종적으로 나오는 결과를 리턴값'(반환값)이라고 부른다.

        변수는 자료를 저장하고, 함수는 기능을 저장한다.

    len은 함수, "1234"는 매개변수, 4는 리턴값이다.

    함수만들기

    def 는 define으로 정의한다 라는 의미이고, introduce()는 함수명을, print()구문은 함수의 내용을 지정한것이다.

    introduce()를 입력하여 함수를 호출한다.

    함수명에 매개변수를 만들면, 함수를 호출할 때 값을 입력해서 함수로 전달할 수 있다.

     

     

    매개변수와 관련된 TypeError.

     

    함수를 생성할 때 매개변수를 만들었는데, 호출할 때 매개변수를 넣지 않거나 더 많이 넣고 코드를 실행하면 오류를 출력한다.

    함수의 매개변수 'age'가 입력되지 않았다.
    2개의 매개변수가 필요한데 3개가 입력되었다.

    따라서 함수를 호출할 때는 함수를 선언할 때와 같은 개수의 매개변수를 입력해야 한다.

     

     

    가변 매개변수.

     

    앞서 살펴본 함수는 함수를 선언할 때의 매개변수와 함수를 호출할 때의 매개변수가 같아야 했다.

    하지만 지금까지 많이 사용해 왔던 print()함수는 매개변수를 원하는 만큼 입력할 수 있었다.

    이처럼, 매개변수를 원하는 만큼 받을 수 있는 함수를 가변 매개변수 함수 라고 부르는데, 매개변수 개수가 변할 수 있다는 의미이다.

     

    • 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다
    • 가변 매개변수는 하나만 사용할 수 있다.

    이러한 제약이 없으면 가변 매개변수가 어디부터 어디까지인지 알 수 없기 때문에 만들어진 규칙이다.

     

     

    기본 매개변수(디폴트 파라미터)

     

    '기본 매개변수'는 매개변수를 입력하지 않았을 때 매개변수에 들어가는 기본값(고정값)이다.

    기본 매개변수의 뒤에는 일반 매개변수가 올 수 없다

    기본 매개변수는 가변 매개변수와 함께 사용할 수 없다. 가변 매개변수가 우선시 되기 때문이다.

     

    키워드 매개변수

    키워드 매개변수 매개변수 이름을 지정하여 값을 입력한다.

    가변 매개변수와 기본 매개변수를 함께 사용하기 위해 만들어졌다.

    기본 매개변수를 2로 지정하여 2번 반복하게 만들었지만, 매개변수를 3으로 지정하여 호출했더니 3번 반복하였다.

    매개변수 a는 일반 매개변수이므로 해당 위치해 반드시 입력해야 한다. 하지만 일반 매개변수이지만 키워드 매개변수처럼 사용할 수도 있다.

    매개변수의 순서가 무작위로 쓰여 있지만, 키워드를 지정하여 매개변수를 입력할 경우 순서를 원하는 대로 입력할 수 있다.

    4)는 b의 입력을 생략한 형태이다. 키워드 매개변수를 사용하면 필요한 매개변수에만 값을 입력할 수 있다.

    '일반 매개변수'는 필수로 입력해야 하고, '기본 매개변수'는 필요한것만 키워드를 지정하여 입력하는 경우가 많다.

     

    리턴

     

    return 키워드는 함수를 실행했던 위치로 돌아가라는 뜻으로, 함수가 끝나는 위치를 의미한다.

    함수를 실행했지만 return 키워드를 만나는 순간 함수가 종료되어 "A 위치입니다" 만 출력하고 종료된다.

    return 키워드 뒤에 자료를 입력하면 함수의 결과로 return의 자료가 출력된다.

     

     

    함수의 활용

     


    재귀 함수


            재귀란 '자기 자신을 호출하는 것'을 의미한다.
            재귀 함수는 함수 내부에서 같은 기능을 사용한다.
            재귀 함수는 상황에 따라서 같은 것을 기하급수적으로 반복한다는 문제가 있다.

            기하급수적으로 반복하게 되면, 처리속도가 매우 느려지게 된다.
            이를 해결하기 위해서 메모화라는 기술이 있다.

    팩토리얼(!)이란 n!에서 n을 포함한 n이하의 수들을 모두 곱하는 연산이다.

    반복문을 이용하여 팩토리얼을 구하는 코드이다.

    재귀 함수를 이용하여 팩토리얼을 구하는 코드이다.

      

      메모화.

      

    딕셔너리를 사용하여 한 번 계산한 값을 저장한다. 이를 메모한다고 표현하며, 딕셔너리에 리턴값이 메모되어 있으면 처리를 수행하지 않고 곧바로 메모된 값을 리턴해주면서 코드의 속도를 빠르게 만든다.
        'global' 키워드는 함수 바깥에 있는 변수를 함수내에서 사용하는 키워드이다.

     

    함수 고급.

        튜플.

            '튜플'은 리스트와 비슷한 자료형이다.
            튜플의 리스트와 다른점은 한번 결정된 요소를 변경할 수 없다는 것이다.
            튜플은 소괄호를 사용한다.
            튜플은 이터러블 데이터이다.

     요소를 하나만 가지는 튜플은 쉼표(,)를 반드시 붙여서 선언한다.

     

            괄호를 사용하지 않고 나열한 자료들은 자동으로 튜플로 변환되어 처리된다.

            가변 매개변수의 리턴값은 튜플로 출력된다.

     

     

    람다

     

     

    콜백 함수 : 함수의 매개변수로 함수를 전달하는 코드

     

        sayHello()함수는 print()를 출력하는 함수지만,

        callSayHello()함수는 함수를 매개변수로 전달한다.

        그 결과로 callSayHello를 호출했지만 sayHello의 값이 리턴됬다

     

     

     

     

    map()

     

    map() 함수 : 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성해 주는 함수.

     

     

     

    filter()

     

    filter() 함수 : 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것으로, 새로운 리스트를 구성해 주는 함수.  

     

     

     

     

    람다(lambda)

     

    람다간단한 함수를 쉽게 선언하는 방법이다.

     

    람다는 매개변수 : 리턴값 같은 형태로 만든다.

     

    람다는 def 키워드로 선언했던 함수들을 lambda로 바꾸고, return키워드를 따로 쓰지 않아도 된다.

     

    람다를 사용하면, 코드를 더 깔끔하게 작성할 수 있고, 함수가 매개변수로 넣어졌다고 확인하고 어떤 함수인지를 알기 위해 다시 찾아 올라가는 수고를 하지 않아도 된다.

     

Designed by Tistory.