01 가변 매개변수
가변 매개변수? 매개변수의 개수를 지정하지 않고 전달할 때 사용
- *args(언팩킹)
매개변수 앞에 *를 붙이면 매개변수를 튜플로 처리한다는 의미이다. 보통 *args라고 많이 하지만, 이름은 상관없다.
예문) ①
1
2
3
4
|
def test(*a):
for i in a:
print('{}'.format(i))
test(10, 20, 30)
|
②
1
2
3
4
|
def test(*a):
for i, v in enumerate(a):
print('{} {}'.format(i,v))
test(10, 20, 30)
|
①과 ②는 같은 의미이다. 여기서 enumerate는 인덱스 값과 값을 동시에 출력할 수 있다.
- **kwargs(언패킹)
매개변수 앞에 **를 붙이면 매개변수를 딕셔너리로 처리한다는 의미이다. 보통 *kwargs라고 많이 하지만, 이름은 상관없다.
예문)
1
2
3
4
5
|
def test(**a):
for i in a:
print('{} {}'.format(i, a[i]))
test(트와이스=9, 있지=5, 블랙핑크=4)
|
02 중첩함수
중접함수? 함수안에 정의된 함수
- 예문)
1
2
3
4
5
6
7
|
def nested_func(num):
def func_in_func(num):
print(num)
print("In func")
func_in_func(num + 100)
nested_func(100)
|
cs |
1
2
3
4
5
6
7
|
def out(num):
def inner(n):
result1 = n + 1
return result1
result2 = inner(num)**2
return result2;
print(out(3))
|
cs |
03 람다 함수
람다함수? 코드를 간결하게 작성, 메모리 절약, 가독성 향상, 즉시 실행 함수
*남발하여 사용하지 않도록 한다.
- 예문)
1
2
3
4
5
6
7 |
def result(x,y):
print(x*y)
result(2,3)
#람다함수 result = lambda x, y : x*y
print(result(2,3))
|
위의 1~3번은 6~7번째 줄과 같다. 람다함수로 좀 더 코드를 짧게 짤 수 있다.
1
2
3
|
def result(x, y, func):
print(x + y + func(2,3))
result(2, 3, lambda x, y : x+y)
|
- 람다함수 + map()함수
*map(함수명, 리스트명)은 리스트 안에 요소를 하나씩 함수에 적용시킨다.
예문)
1
2
3
4
|
list1 = [1,2,3,4,5]
print(list(map(lambda x : x+10, list1)))
#출력결과
[11, 12, 13, 14, 15]
|
*번외)
강의를 들으면서 input함수를 사용하는 새로운 방법을 배웠는데, 입력을 받음과 동시에 출력까지 가능해서 간편한 방법인 것 같다.
1
|
print('name-{0}\nphone-{1}'.format(input('name: '), input('phone: ')))
|
cs |
'Programming study > Python' 카테고리의 다른 글
[Python] 내장함수 (1) | 2021.07.28 |
---|---|
[Python] 모듈, 패키지 (0) | 2021.07.21 |
[Python] for-else, while-else문 (0) | 2021.07.19 |
[Python] 리스트, 튜플, 딕셔너리 (0) | 2021.07.15 |
[Python] 숫자형, 문자형 (0) | 2021.07.15 |
01 가변 매개변수
가변 매개변수? 매개변수의 개수를 지정하지 않고 전달할 때 사용
- *args(언팩킹)
매개변수 앞에 *를 붙이면 매개변수를 튜플로 처리한다는 의미이다. 보통 *args라고 많이 하지만, 이름은 상관없다.
예문) ①
1
2
3
4
|
def test(*a):
for i in a:
print('{}'.format(i))
test(10, 20, 30)
|
②
1
2
3
4
|
def test(*a):
for i, v in enumerate(a):
print('{} {}'.format(i,v))
test(10, 20, 30)
|
①과 ②는 같은 의미이다. 여기서 enumerate는 인덱스 값과 값을 동시에 출력할 수 있다.
- **kwargs(언패킹)
매개변수 앞에 **를 붙이면 매개변수를 딕셔너리로 처리한다는 의미이다. 보통 *kwargs라고 많이 하지만, 이름은 상관없다.
예문)
1
2
3
4
5
|
def test(**a):
for i in a:
print('{} {}'.format(i, a[i]))
test(트와이스=9, 있지=5, 블랙핑크=4)
|
02 중첩함수
중접함수? 함수안에 정의된 함수
- 예문)
1
2
3
4
5
6
7
|
def nested_func(num):
def func_in_func(num):
print(num)
print("In func")
func_in_func(num + 100)
nested_func(100)
|
cs |
1
2
3
4
5
6
7
|
def out(num):
def inner(n):
result1 = n + 1
return result1
result2 = inner(num)**2
return result2;
print(out(3))
|
cs |
03 람다 함수
람다함수? 코드를 간결하게 작성, 메모리 절약, 가독성 향상, 즉시 실행 함수
*남발하여 사용하지 않도록 한다.
- 예문)
1
2
3
4
5
6
7 |
def result(x,y):
print(x*y)
result(2,3)
#람다함수 result = lambda x, y : x*y
print(result(2,3))
|
위의 1~3번은 6~7번째 줄과 같다. 람다함수로 좀 더 코드를 짧게 짤 수 있다.
1
2
3
|
def result(x, y, func):
print(x + y + func(2,3))
result(2, 3, lambda x, y : x+y)
|
- 람다함수 + map()함수
*map(함수명, 리스트명)은 리스트 안에 요소를 하나씩 함수에 적용시킨다.
예문)
1
2
3
4
|
list1 = [1,2,3,4,5]
print(list(map(lambda x : x+10, list1)))
#출력결과
[11, 12, 13, 14, 15]
|
*번외)
강의를 들으면서 input함수를 사용하는 새로운 방법을 배웠는데, 입력을 받음과 동시에 출력까지 가능해서 간편한 방법인 것 같다.
1
|
print('name-{0}\nphone-{1}'.format(input('name: '), input('phone: ')))
|
cs |
'Programming study > Python' 카테고리의 다른 글
[Python] 내장함수 (1) | 2021.07.28 |
---|---|
[Python] 모듈, 패키지 (0) | 2021.07.21 |
[Python] for-else, while-else문 (0) | 2021.07.19 |
[Python] 리스트, 튜플, 딕셔너리 (0) | 2021.07.15 |
[Python] 숫자형, 문자형 (0) | 2021.07.15 |