Python3 프로그래밍 - 12C 연습 - 귀속 및 lambda 함수
14846 단어 pythontutorialprogrammingbeginners
귀속 함수와 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
두 개의 숫자r
의a
와b
,a % b
의나머지부분r
가 0
인지, b
를 a
로 나누면 b
, 만약 그렇다면 되돌아오기b
a
에 r
및 b
에 lambda
를 할당하고 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 5
lambda 함수를 사용할 수 없습니다.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)
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
요약
def function_name(some_args):
# some code
func_name(some_args)
를 통해 함수를 호출할 수 있다return
함수를 종료하고 함수Reference
이 문제에 관하여(Python3 프로그래밍 - 12C 연습 - 귀속 및 lambda 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/otumianempire/python3-programming-exercise-12-c-2j9j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)