https://www.youtube.com/watch?v=M_wLOmNRBN8&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=10https://www.youtube.com/watch?v=M_wLOmNRBN8&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=10

10강 파이썬 문법: 함수와 람다 표현식-0
10강 파이썬 문법: 함수와 람다 표현식-1
10강 파이썬 문법: 함수와 람다 표현식-2
10강 파이썬 문법: 함수와 람다 표현식-3
10강 파이썬 문법: 함수와 람다 표현식-4
10강 파이썬 문법: 함수와 람다 표현식-5

파이썬에서 함수의 종류는 크게 2가지로 나눌수 있음

10강 파이썬 문법: 함수와 람다 표현식-8
10강 파이썬 문법: 함수와 람다 표현식-9
10강 파이썬 문법: 함수와 람다 표현식-10

특징이있음

10강 파이썬 문법: 함수와 람다 표현식-12
10강 파이썬 문법: 함수와 람다 표현식-13
10강 파이썬 문법: 함수와 람다 표현식-14

그 프로그램에서 자주 사용되는 기능을

10강 파이썬 문법: 함수와 람다 표현식-16
10강 파이썬 문법: 함수와 람다 표현식-17

모듈화 해서 개발을 진행할수 있습니다

매개변수: 함수를 호출할때 함수내에서 사용할 입력값으로서 이 매개변수를 받을 수 있음

10강 파이썬 문법: 함수와 람다 표현식-20

결과를 반환 하고자 할때는 이 반환값을 명시해서 return 키워드와 함께

특정한 값을 반환할수 있음

def define 의 약장 정의하겠다는 의미임

10강 파이썬 문법: 함수와 람다 표현식-24

이렇게 해줌으로서 함수를 정의할수 있음

이렇게 정의옆에 :을 넣어줘서 함수가 어떠한 방식으로 돌아가는지 명시해줘야함

10강 파이썬 문법: 함수와 람다 표현식-27

이때 이 매개변수와 반환값은 없을수도 있음

10강 파이썬 문법: 함수와 람다 표현식-30

3,7 을 인자값 함수안에 있는 a,b를 매개변수라고 사용함

10강 파이썬 문법: 함수와 람다 표현식-33
10강 파이썬 문법: 함수와 람다 표현식-34

영어로는 파라메터 얼뷰먼트가 아닌 얼규먼트

10강 파이썬 문법: 함수와 람다 표현식-36
10강 파이썬 문법: 함수와 람다 표현식-37

10강 파이썬 문법: 함수와 람다 표현식-40

즉 전역변수를 만들어서 소스코드 어디서든 사용하게 만들겠다는 것임

10강 파이썬 문법: 함수와 람다 표현식-43
10강 파이썬 문법: 함수와 람다 표현식-44
10강 파이썬 문법: 함수와 람다 표현식-45
10강 파이썬 문법: 함수와 람다 표현식-46
10강 파이썬 문법: 함수와 람다 표현식-47

오류 메세지 보면 a라는 변수가 할당 되기전에 참조되었다고 오류 메세지가 출력되는것을 확인할수 있음

다시말해 이렇게 하나의 함수 안에 포함되고 있는 a라는 변수는 초기화가 안된건 처럼 처리가 되는 겁니다.

10강 파이썬 문법: 함수와 람다 표현식-50

a = 0 이 구문이 없으면 이 fun()내부에는 a라는 변수가 아직 선언이 안된 상태이기 때문에 이 바깥쪽에 a를 참조하지 않고 그냥 a란 변수 자체가 없다고 인식을 하는걸

확인 할 수 있음

10강 파이썬 문법: 함수와 람다 표현식-53
10강 파이썬 문법: 함수와 람다 표현식-54
10강 파이썬 문법: 함수와 람다 표현식-55

10강 파이썬 문법: 함수와 람다 표현식-57

값을 그대로 출력하는 등 단순히 값을 참조 하는 경우에는 오류 없이 수행되는 것을 확인할수 있습니다

10강 파이썬 문법: 함수와 람다 표현식-59
10강 파이썬 문법: 함수와 람다 표현식-60

30 확인 할 수 있음

이런식으로 가져온 값을 더해서 출력하는것 또한 오류가 없음

https://dojang.io/mod/page/view.php?id=2364

전역변수 지역변수 설명 참조

10강 파이썬 문법: 함수와 람다 표현식-66

또한 한가지 유의하면 좋은점은 전역변수로 한가지 리스트가

선언되어있을때 전역변수로 선언된 리스트객체에 내부메서드를 호출하는 것은 또 오류없이 수행가능함 보면 6 추가됨

또한 이또한 마찮가지로 만약에 함수안에 지역변수로서 이 전역변수와 동일한 이름에 하나의 리스트가 선언이된다면 이 함수 안에서는 이 지역변수가 우선적으로 참조가됨

10강 파이썬 문법: 함수와 람다 표현식-72

다시말해서 전역변수와 지역변수가 동일한 이름으로 존재한다면 이 함수안에서는 내부적으로 선언되어있는 이 변수를 수선적으로 처리하기때문에 이런경우에는

10강 파이썬 문법: 함수와 람다 표현식-75

10강 파이썬 문법: 함수와 람다 표현식-77

함수 바깥쪽에서 어뤠이를 참조하게 되면 전역변수로 선언되어있는

어뤠이를 우선적으로 접근하는것을 확인 할수 있습니다.

이처럼 이 지역변수와 전역변수의 차이점에대해서 숙지하고 계시면 실제로 문제를 푸실때 싫수 없이 정확하게 코드를 작성할수 있습니다.

다만 실제로 코딩테스트 문제를 풀때는 보통 이렇게 어떠한 리스트 객체는 단순히 전역변수를 사용하는 경우가 많고 이렇게 함수에서도 해당변수를 바로 참조 하도록 만드는 경우가 많기 때문에 실제 코딩테스트에서는 별도로 2개이상의 변수가 동일한 이름을 가지는 경우가 아니라면 지역변수와 전역변수에 그 스코프(범위) 설정에 대해서 많이 신경을 써야하는 경우는 적긴합니다.

10강 파이썬 문법: 함수와 람다 표현식-85

그렇지만 이렇게 전역변수에 참조를 해야할때는 글러벌 키워드를 사용할 수 있다는점 기억해 두시면 좋을것 같아요 이런경우에는 바깥쪽에 있는 전역변수에 참조를 하게되기때문에 이 맨위 전역변수 array가 12345 에서 함수안에서 345 로 다시

할당이 이루어지고 여기에 6을 더하기 때문에 실제로 출력을 해보았을때 3456으로

전역변수의 array에 값이 바뀌는걸 확인할수 있죠 바로 이처럼 전역변수에 있는 값을 참조해서 값을 변경하고자 할때는 이 global 키워드를 사용해야한다는 점을 기억해두세요(출력은 글로벌 없이도 가능)

10강 파이썬 문법: 함수와 람다 표현식-91

흔히 c++ 에서는 여러개의 반환값을 가지도록 만들고자 할때 별도록 포인터를 이용하거나 클래스 혹은 구조체를 이용하는 것이 정석인데요 이 파이썬 같은 경우는 단순하게 여러개의 값을 한꺼번에 리턴 할수가 있습니다

이경우 자동으로 이 반환하고자 하는 변수들이 한번에 묶여서 한꺼번에 반환됩니다 이제 이렇게 여러개의 변수가 한꺼번에 반환되는 것을 엄밀히는 패킹이라고 말함 이제 이렇게 함수를 호출하는 측면에서 그 반환된 값들을 차례대로 특정 번수에 담는것을 언패킹이라고 말을합니다

현재 코드에서는 a, b가 입력으로 들어왔을때 더한 결과 뺀결과 곱한결과 나눈결과를 차례대로 리턴하는 것을 확인 할수 있는데요 이제 이경우 각각의 결과들이 a b c d에 담기게 됩니다. 즉 이렇게 반환된 순서에 맞게 특정변수에 결과값을 담을 수가 있는 겁니다

이제 이처럼 함수가 여러개의 반환값을 가질수 있으며 편하게 사용할수 있다는 점은 이 파이썬에서의 강점이라고 할수 있습니다.

10강 파이썬 문법: 함수와 람다 표현식-100

람다 표현식같은 경우는 별도로 이렇게 일반적으로 함수를 정의하는 것과 같이 함수 이름을 적어주고 별도의 함수를 정의하는게 아니라 바로 한줄의 람다 표현식으로 함수를 정의 할수 있다는 점에서 함수의 이름 또한 요구하지 않습니다 그래서 이름 없는 함수라고도 불림

이게 사실 람다라는 이름이 다소 생소 할수 있지만 그 사용 방법자체는 굉장히 간단합니다

10강 파이썬 문법: 함수와 람다 표현식-104

이렇게 입력으로 받을 매개변수를 차례대로 명시해 주고 a, b

이 : 콜론을 넣어서 함수의 반환값을 이어서 명시하면 됩니다

지금 이코드 자체는 람다표현식으로 간단히 구현한 + 함수 라고 할수 있고요

이자체를 하나의 add함수로볼수 있구 이제 그 매개변수로 3, 7를 넣은거니까

이제 자체가 10이란 반환값을 가지게 되겠죠 그래서 수행결과는 위에 add함수를 호출한것과 동일결과를 가짐

이러한 람다 표현식이 매우 효과적으로 사용되는 경우는 어떠한 함수 자체를 입력으로 받는 또 다른 함수가 존재할수 있는데요 이제 그러한 상황에서 매우 유용하게 사용될수 있으며 또한 함수의 기능이 매우 간단하거나 단순히 한번 사용하고 말 경우에 효과적으로 사용될수 있습니다

10강 파이썬 문법: 함수와 람다 표현식-113

람다 표현식 예시: 내장 함수에서 자주 사용되는 람다 함수

array = [('홍길동', 50), ('이순신', 32), (''아무개', 74)]

def my_key(x):

sorted 나 sort와 같은 정렬함수에서 이 람다함수를 속석의 값으로 간단하게 넣어줄수 있는데요 이제 이건 굉장히 많이 사용되는 방식중 하나입니다.

sorted 함수 설명

https://blockdmask.tistory.com/466

10강 파이썬 문법: 함수와 람다 표현식-123

이순신 함수는 32 아무개 함수는 74점이라고 하면 이경우에 학생을 점수로 오름차순 정렬을 하고자 한다면 어떻게 할수 있을까요

10강 파이썬 문법: 함수와 람다 표현식-125

즉 키 속성으로는

10강 파이썬 문법: 함수와 람다 표현식-127
10강 파이썬 문법: 함수와 람다 표현식-128

확인해 보시면 어떠한 원소가 있을때 즉 이 튜플ex ('홍길동' 50)이 주어졌을때 그 내부적으로 두번째 원소(점수 ex 50, 32, 74)를 기준으로 해서 정열을 수 행하도록 명시할수가 있는겁니다

이렇게 두번제 원소를 리턴하도록 해서 정렬기준을 명시할수 있고여 이러한 정렬 기준을 키속성의 값으로 넣어줌으로써 정열을 수행할수 있습니다 이렇게 수행결과를 보면 점수순으로 오름차순으로 각 학생의 정부가 정렬되어 출력된걸 확인 할 수 있습니다.

이제 이런경우에 사실 정렬기준 함수 같은 경우는 한번 사용되고 마는 경우가 많기 때문에 이렇게 간단히 람다함수를 이용해서 간편하게 함수를 정의 할수 있습니다

10강 파이썬 문법: 함수와 람다 표현식-133

이 코드는 위 코드를 단 한줄로 정렬결과를 출력한걸 확인 할수 있음 키 속성으로 람다 함수로 정의한걸 확인 할수 있습니다 어떠한 튜플이나 리스트와 같은 원소가 있을때 이제 거기에서 두번째 원소를 기준으로 해서 정열을 수행하도록 명시 한걸 확인할수 있습니다.

10강 파이썬 문법: 함수와 람다 표현식-138

또한 람다 표현식을 효과적으로 활용할 수 있는 또다른 예시가 있는데요 이처럼 여러개의 리스트에 동일한 규칙을 가지는 하나의 함수를 적용하고자 할때 람다 표현식을 효과적으로 사용할 수 있습니다.

보시면 이렇게 map 함수와 함께 사용된걸 확인할 수 있는데요 이때 map함수는 이전에도 말씀드렸듯이 각각의 원소에 어떠한 함수를 적용하고자 할때 사용할수 있습니다.

10강 파이썬 문법: 함수와 람다 표현식-144
10강 파이썬 문법: 함수와 람다 표현식-146
10강 파이썬 문법: 함수와 람다 표현식-147

a+b를 반환하는 하나의 함수를 정의할수 있고 이제 이 함수를 리스트 1 과 리스트 2에 적용을 하는 겁니다 그럼 이제 리스트 1, 2 의 매 원소를 하나씩 확인 하면서

각각의 위치에 맞는 원소끼리에 더해진 결과가 result에 담기게 되는 것임 그래서

결과적으로 7 9 11 13 15 가 이 result에 담겨서 출력되는걸 확인 할수 있습니다

Last Updated:

Summarize & share videos seamlessly

Loading...