늦은 프로그래밍 이야기

함수 본문

내일배움캠프/Python

함수

한정규 2022. 11. 8. 23:16

함수

사용 방법

기본

 - 반복적으로 사용하는 코드들에 이름을 붙여놓은 것

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