늦은 프로그래밍 이야기
함수 본문
함수
사용 방법
기본
- 반복적으로 사용하는 코드들에 이름을 붙여놓은 것
def hello(): # 함수 작성
print("Hello!")
hello() # 반복 사용
hello()
조건문 함수
- 값을 바꿔가면서 결과를 확인
def bus_rate(age):
if age > 65:
print('경로우대')
elif age > 20:
print('성인')
else:
print('청소년')
bus_rate(27)
bus_rate(10)
bus_rate(72)
- 결과값 출력 함수
def bus_fee(age):
if age > 65:
return 0
elif age > 20:
return 1200
else:
return 750
fee = bus_fee(28)
print(fee)
파일분리
- 여러개 파일로 분리 후 임포트 하기
1) main_func.py 파일 생성 후 내용에 함수 작성
def say_hi():
print('안녕')
2) main_test.py 파일 생성 후 임포트
from main_func import *
say_hi() # 안녕이 출력된다.
함수 심화
- 직접 쓰는 것 보단 알고 있으면 내장함수 등을 사용할 때 도큐먼트를 읽는데 도움이 된다.
매개변수
1) 함수에 인수를 넣을 때, 매개변수마다 값을 지정할 수 있음. 순서 상관 없음.
def cal(a, b):
return a + 2 * b
print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5)) # 값을 지정
print(cal(b=5, a=3))
2) 매개변수에 디폴트 값 지정. 단, 인수를 넣을 때 값을 입력하면 입력한 값으로 출력.
def cal2(a, b=3):
return a + 2 * b
print(cal2(4))
print(cal2(4, 2)) # b = 2로 출력된다.
print(cal2(a=6))
print(cal2(a=1, b=7)) # b = 7로 출력된다.
3) 입력값의 개수를 지정하지 않고 모두 받는 방법 (*args)
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
4) 키워드 인수를 여러개 받는 방법 (**kwargs)
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
map
- 리스트의 모든 원소 조작 (특정 조건에 따라 각각의 return값을 모아서 리스트에 넣음)
- map(함수명, 리스트명)
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
- Lambda식으로 변형
# 기본형
result = map(lambda x: x, people)
# x = person
result = map(lambda person: person, people)
# 조건 입력
result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
# 최종 (person -> x)
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
filter
- map과 유사함, 조건에 맞는 것들만 필터링.
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = filter(check_adult, people)
print(list(result))
- Lambda식으로 변형
# 기본
result = filter(lambda x: x, people)
# x = person
result = filter(lambda person: person, people)
# 조건 입력
result = filter(lambda person: person['age'] > 20, people)
# 최종 (person -> x)
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
'내일배움캠프 > Python' 카테고리의 다른 글
| 숫자 각 자리수를 리스트 요소로 변환 (0) | 2022.11.16 |
|---|---|
| 반복문으로 2차원 리스트의 요소 출력하기 (0) | 2022.11.16 |
| 조건문, 반복문 (0) | 2022.11.08 |
| 자료형 (1) | 2022.11.08 |
Comments