Python 4일차 - 함수 흐름 제어 1

컬럼월드·2025년 9월 30일
post-thumbnail

GOAL
1. 함수 정의와 return 이해
2. 매개변수 있는 함수와 없는 함수 구분
3. 람다 함수 이해하기
4. 조건문 (if, elif, else, 삼항연산자, pass) 익히기
5. 내장 함수(map, filter, zip 등) 활용하기
6. 데이터 타입 관점에서 함수 동작 파악하기

목차
1. 함수란 무엇인가?
2. 함수 정의와 반환값
3. 매개변수가 있는 함수 vs 없는 함수
4. 람다 함수
5. 조건문 if/elif/else
6. pass / 삼항연산자
7. 내장 함수(map, filter, zip, enumerate 등)
8. 실습: 헬스케어 데이터 분석

함수(Function)란?

: 자주 쓰는 코드를 묶어두는 도구이다.
: 필요할 때마다 꺼내서 실행 가능하다.
: 돈(입력)을 넣으면 → 음료수(출력)이 나온다!

함수 정의 문법
def 함수이름(매개변수):
실행할 코드
return 결과값

def : 함수 정의 키워드
return : 결과값 돌려준다. (없으면 None)

여기서 매개변수라는 말이 나옵니다.

매개변수(Parameter) vs 인자(Argument)

매개변수(Parameter)

: 함수를 정의할 때, 함수가 받을 변수 이름 (자판기에 있는 '콜라', '사이다', 라벨에 있는 금액)

인자(Argument)

: 함수를 실제로 호출할 때 넣는 값 (실제로 투입한 동전)

매개변수(Parameter) vs 인자(Argument)
def add(a, b): # a, b → 매개변수 (설계도에 적힌 이름)
return a + b
print(add(3, 5)) # 3, 5 → 인자 (실제 넣은 값)

이렇게 쓸 수 있습니다.

그리고 매개변수가 꼭 필요한 것은 아닙니다. 매개변수가 없는 함수도 있을수 있습니다.

매개변수가 있는 함수이면,

def add(a, b):
return a + b
print(add(3,5)) # 8

입력: int 2개
출력: int

매개변수 없는 함수이면,

def hello():
return "안녕하세요"
print(hello()) # '안녕하세요'

입력: 없음
출력: 문자열(str)

또는 여러 매개변수가 있는 함수도 있습니다.

def introduce(name, age):
return f"저는 {name}, {age}살입니다."
print(introduce("철수", 20)) # "저는 철수, 20살입니다."

입력: str, int
출력: str

이런 매개변수도 디폴트(Default)값을 가질 수도 있습니다.
매개변수값을 입력 못받으면, 기본값인 디폴트값을 반환합니다.

이를 디폴트(Default) 매개변수(기본값)라고 합니다.

def greet(name="손님"):
return f"{name}님, 어서오세요!"
print(greet()) # "손님님, 어서오세요!"
print(greet("철수")) # "철수님, 어서오세요!"

값을 안 넣으면 기본값 사용합니다.
편리하고 오류 방지에 좋습니다.

이런 매개변수는 순서 상관도 안해도 돼요~ 이게 무슨 말이냐

def introduce(name, age):
return f"{name}, {age}살"
print(introduce(age=20, name="영희"))

return 값을 name, age순으로 오게 했는데
print값은 age, name순으로 해도 ok. 괜찮습니다.

그럼 인수를 여러개 쓰는건 어떨까요~

def add_all(*numbers):
return sum(numbers)
print(add_all(1,2,3,4)) # 10

여러 개 인자를 튜플로 묶어서 받을 수 있습니다.

"*"를 써서 글씨가 늬여지네요!! ㅎㅎ
"**" 이렇게 두개를 쓰면 어떻게 무엇이 될까요?
: 딕셔너리 dict가 됩니다.

def show
_info( " ** "info):
for k, v in info.items():
print(k,":", v)
show_info(name="민수", city="Seoul", job="Dev")

여러 개 키워드 인자를 dict로 묶어서 받습니다. (글자가 두 번째 줄부터 두꺼워지는 이유는
벨로그가 " ** "를 강조 효과라 생각해서 큰 따옴표랑 같이 썼습니다.
원래는 큰 따옴표("")없이 써야 맞습니다.

저희 파이썬 코드 중간에 이 줄의 설명이 필요할 때, 주석을 달아줘야 합니다.
이를 파이썬으로 구현할려면

""" 설명 내용 """

이렇게 쓰면 됩니다.

예를 들어서
def square(x):
"""숫자를 제곱해서 반환하는 함수"""
return x * x
help(square)

이렇게 쓸 수 있습니다.

pass 키워드

**x = 5
if x > 0:
pass # 아무 일도 안 함
else:
print("음수")

아직 코드를 안 짰을 때 자리 채우기용으로 씁니다.

여기 코드가 있습니다.

age = 20
status = " "
if age >=18:
status = "성인"
else :
status = "미성년자"
print(status)
약 7줄의 코드가 있습니다.
나이가 18세 이상이면 성인, 그렇지 않다면 미성년자를 구별하는 코드입니다.

이를 단. 3줄로 표현이 된다면 믿으시겠습니다??!(도를 믿는다 약파는거 아닙니다.)

줄어주도록 도와주는 "연산자"가 있습니다.
삼항 연산자라고 합니다.

age = 20
status = "성인" if age >= 18 else "미성년자"
print(status) # 성인

단. 3줄로 가능하게 도와줍니다.
요즘 컴퓨터는 64bit가 대부분이라 코드를 짜는데 메모리 용량 걱정하는 시기는 아니지만,
옛날 컴퓨터들은 메모리 용량이 워낙 작고, 그나마 큰 용량은 32bit정도라
코드를 최대한 짧게, 효율적으로 썼어야 했습니다.
이를 저 삼항 연산자가 효율적으로 쓸 수 있도록 도와주는 역할을 했었습니다.
실제로 회사에서 좀 옛날에 개발했던 코드들을 보면 간간히 볼 수 있습니다!

내장함수

파이썬 자체에서 내장되어 있는 함수가 있습니다.
사람들이 많이 쓰는 함수들을 골라서 이렇게 내장함수로 만듭니다.
그러므로 반드시 알아야 할 기초 도구들이기도 합니다.
이를 쓸 때, 별도 import 없이 바로 사용 가능합니다.

그 종류에 대해서 10가지 정도 알아보도록 하겠습니다.

1. map()

: 리스트(이터러블)의 모든 값을 변환(가공) 할 때 사용합니다.

nums = [1,2,3]
squared = list(map(lambda x: x**2, nums))
print(squared) # [1,4,9]

입력: 리스트(int)
출력: 리스트(int)

2. filter()

: 조건에 맞는 값만 필터링해서 선별해줍니다.

nums = [1,2,3,4,5]
evens = list(filter(lambda x: x%2==0, nums))
print(evens) # [2,4]

입력: 리스트(int)
출력: 조건 만족하는 리스트(int)

3. zip()

: 여러 리스트를 쌍으로 묶습니다.

names = ["Alice","Bob"]
ages = [25, 30]
paired = list(zip(names, ages))
print(paired) # [('Alice',25), ('Bob',30)]

입력: 리스트 2개
출력: 튜플 리스트

4. len()

: 길이(원소 개수)를 구합니다.

nums = [1, 2, 3]
print(len(nums)) # 3

문자열, 리스트, 튜플 등 모든 시퀀스 자료형에 사용가능

5. sum(), max(), min()

: 합계, 최댓값, 최솟값을 구합니다.

nums = [1, 2, 3]
print(sum(nums)) # 6
print(max(nums)) # 3
print(min(nums)) # 1

숫자 리스트 다룰 때 가장 자주 씁니다.

6. sorted()

: 정렬된 새로운 리스트 반환합니다.
: key 매개변수로 함수 전달 가능

words = ["apple","banana","kiwi"]
print(sorted(words)) # ['apple','banana','kiwi']
print(sorted(words, key=len)) # ['kiwi','apple','banana']

7. any(), all()

: 불리언 조건을 한 번에 평가
: any = True가 하나라도 있으면 True 반환.(or과 같은 의미를 지님)
: all = 모든 값이 True일 때만 True 반환.(and와 같은 의미를 지님)

values = [False, False, True]
print(any(values)) # True
values = [True, True, True]
print(all(values)) # True

내장함수 요약
: map, filter → 함수를 인자로 전달해 데이터 가공
: zip → 여러 리스트를 묶어주기
: len, sum, max, min → 기본 연산 필수 도구
: sorted(key=) → 함수와 함께 강력한 정렬
: any, all → 조건 검사 간단히 표현

오늘 함수 흐름제어에 대해서 간략하게 알아보았습니다.😁

이 글을 쓰는 시점이 9월 30일입니다.24절기 중에서 16번째인 추분이 약 일주일정도 지난 시점인데요 추분점을 기점으로 낮과 밤의 길이가 같아진다고 합니다. 그리고 이즈음하여 논밭의 곡식을 거둔다고 합니다. 이제는 6시가 조금 넘어가도 어두워지네요
날씨도 제법 추워서 반팔은 집어넣고 긴팔 긴바지 필수가 되었습니다.
이런 날씨에는 감기가 무척 잘 걸리는 것 같아요
환절기,,, 😣😣😣
다들 건강 조심하시고 잘 챙기세요. 아프며 서러워요

profile
안녕하세요, 코딩과 잡다한 얘기도 좋아해요.

0개의 댓글