Python3 프로그래밍 - 12C 연습 - 귀속 및 lambda 함수


귀속 함수와 lambda 함수

This is a continuation of exercise 12 b (A function that returns a value)



역귀함수
우리는 함수를 어떻게 만드는지, 매개 변수를 함수에 어떻게 전달하는지, 그리고 함수를 어떻게 호출하는지 토론했다.우리 많이 했어.만약 우리가 자주 쉬면, 우리는 매우 좋은 보수를 받을 것이다.

Kindly take a break to revise what we learnt so far and also take a long break away from PC.


이 연습에서는 함수를 더 많이 다룹니다.귀속 함수는 자신을 호출한다.그것은 기본적인 상황이 잘못될 때까지 계속 이렇게 할 것이다.
factorial 함수를 실현합시다.우리의 함수는 정수 입력을 받아들일 것이다.입력이 1보다 작으면 함수가 1을 되돌려줍니다. 그렇지 않으면 계속합니다.
정수를 n로 입력합니다.n곱하기는 n!=n * (n - 1) * (n - 2) * (n - 3) * ... * 1.우리의 기본 상황은 1이다.우리가 도착했을 때 1, 우리는 귀속 함수를 중단하거나 중지합니다.

예제 1-For 루프
factorial = 1
n = int(input("Enter n: "))

if n < 1:
    print(1)
else:
    for i in range(1, n+1):
        factorial *= i

    print(factorial)

# input  output
#    3     6
#    5     720
#    15    1307674368000

예제 2 - 함수
현재 우리는 귀속 함수를 사용하여 상술한 기능을 실현할 것이다.
def factorial(n):
    if n < 1:
        return 1

    else:
        return n * factorial(n-1)
  • def factorial(n): 우리는 곱셈이라는 함수를 정의했는데 정수 매개 변수n를 받아들인다.
  • if n < 1: return 1: 우리는 기본 상황을 검사하고 1로 돌아간다.함수가 1을 되돌려줍니다. 실행 정지입니다.
  • else: return n * factorial(n-1): 만약에 n > 1하면 우리는 n에 곱하기factorial(n-1)를 한다.
  • 만약에 n=5:
  • factorial(5) = 5 * factorial(4)
  • factorial(5) = 5 * 4 * factorial(3)
  • factorial(5) = 5 * 4 * 3 * factorial(2)
  • factorial(5) = 5 * 4 * 3 * 2 * factorial(1)
  • factorial(5) = 5 * 4 * 3 * 2 * 1
  • factorial(5) = 720

  • 예3
    실행Euclid GCD algorithm.우리는 두 수의 최대 공약수gcd(a, b)에 관심이 있다.
    알고리즘:
  • 설정a, b 두 개의 숫자
  • rab,a % b의나머지부분
  • 검사r0인지, ba로 나누면 b, 만약 그렇다면 되돌아오기b
  • 또는 arblambda 를 할당하고 2단계를 반복합니다.
  • a = int(input("Enter a: "))
    b = int(input("Enter b: "))
    
    while True:
        r = a % b
    
        if r == 0:
            print(b)
            break
    
        else:
            a = b
            b = r
    
    # a = 72
    # b = 96
    # gcd(a, b) = 24
    

    예4
    재귀속을 사용하다.
    def gcd(a, b):
        r = a % b
    
        if r == 0:
            return b
    
        else:
            return gcd(b, r)
    
    print(gcd(72, 96))  # 24
    
    이 코드를 줄여달래요.
    def gcd(a, b):
        if a % b == 0:
            return b
    
        return gcd(b, a % b)
    

    익명 함수
    Lambda 함수는 이름 없는 함수라고도 불린다.우리는 이것이 일회성 함수라고 말할 수 있다.우리는 (lambda comma-separated-args: body) 키워드를 사용하여 lambda 함수를 만듭니다.간단히 말하면def
    구조
    주어진 정수를 1로 늘리고 값을 되돌려 주는 함수를 생각해 봅시다.
    def inc(n):
        return n + 1
    
    
    print(inc(2))  # 3
    
    
    위의 코드 세그먼트는 lambda 키워드로 함수를 만듭니다.이제 같은 함수를 만들기 위해 lambda 키워드를 사용하는 방법을 보여 줍니다.

    예5
    print((lambda x: x+1)(2))  # 3
    
    따라서 lambda 함수의 구조는 정규 함수의 구조와 비슷하다.우리는 def 키워드를 사용하지 않고 : 함수에 이름이 없습니다.모든 매개 변수는 공백 쉼표로 lambda 키워드와 구분됩니다.기능체는 사칭return으로 구분된다.
    예시 5에서, 우리는 매개 변수 2를 lambda 함수에 전달할 것이다.그것이 어떻게 통과되었는지 주의해라.

    예6
    우리는 여러 개의 매개 변수를 lambda 함수에 전달할 수 있다.example 5lambda 함수를 사용할 수 없습니다.lambda 함수를 사용하여 두 개의 숫자를 비교하고 비교적 작은 숫자를 되돌려줍니다.
    print((lambda a, b: a if a < b else b)(2, 4))  # 2
    
    
    보통 우리는 쓰지만,
    def min_val(a, b): return a if a < b else b
    
    
    print(min_val(2, 4))  # 2
    
    다음과 같습니다.
    def min_val(a, b):
        if a < b:
            return a
        else:  #  we can comment out the else:
            return b
    

    우리는 lambda 함수에 이름을 지정할 수 있다first func를 고려해 보자. 만약에 우리가 주어진 숫자를 하나 늘리면 lambda 함수를 변수에 전달하고 함수처럼 이 변수를 호출할 수 있다.
    inc = (lambda n: n + 1)
    
    print(inc(2))  # 3
    
    너는 아래의 이 두 부분의 차이를 말할 수 있니?
    # first func
    inc = (lambda x: x + 1)
    print(inc(4))
    
    # second func
    inc = (lambda x: x + 1)(4)
    print(inc)
    
  • 에서 lambda 함수는 inc에 분배되었다.inc를 호출하고value 매개 변수4를 전달했습니다.그래서 우리는 inc가 함수라고 말할 수 있다.
  • second func에서 값의 매개 변수4는 lambda 함수에 전달된다.결과는 inc에 분배되었다.그래서 inc는 하나의 함수가 아니라 다른 값 변수4 + 1 = 5일 뿐이다.

  • 인턴
  • 함수를 작성하여 목록을 정렬[[47, 3, 1, 34], [0. - 3, 4], [7, 21, 13, 37, 8]]
  • 화씨에서 섭씨
  • 로 온도를 되돌리는 함수를 작성합니다.
  • 함수를 작성하여 주어진 범위 내의 숫자의 합을 되돌려줍니다.범위가 1 to 5이면 15로 돌아갑니다.
  • 주어진 범위
  • 사이의 제곱을 인쇄하는 함수를 작성합니다
  • 정수에 주어진 숫자를 더하는 함수를 작성합니다.주어짐12345, 반환15
  • 함수를 작성하여 주어진 연도가 윤년인지 검증한다.주어진 입력이 윤년이라면 4로 나누어야 하지만 (및) 100으로 나누지 못하거나 400으로 나누어질 수 있다.

  • 요약
  • 함수는 특정 작업을 수행하는 코드 블록
  • 함수는 최소한 0개의 매개 변수를 받아들일 수 있다
  • 함수 정의
  •   def function_name(some_args):
          # some code
    
  • 우리는 func_name(some_args)를 통해 함수를 호출할 수 있다
  • 함수 코드 재사용 허용
  • 함수는 코드의 모든 부분에 사용할 수 있음
  • 함수를 만들 때 파라미터가 함수에 전달됩니다
  • 매개 변수는 함수
  • 를 호출할 때 함수에 전달되는 매개 변수이다
  • return 함수를 종료하고 함수
  • 에서 값을 되돌려줍니다
  • *arg-tuple 매개 변수를 사용하여 더 많은 매개 변수를 수집
  • 함수는 가능한 한 많이 호출될 수 있음
  • 귀속 함수 호출 자체
  • lambda 함수는 무명 함수로 통상적으로 동적으로 필요하다
  • 좋은 웹페이지 즐겨찾기