[Python] 함수 선언하기

cdwde·2021년 5월 9일
0

🎈 함수의 구조 & 위치

함수의 구조

def 함수명(매개변수):
    <수행할 문장>
    ...
    return 

❗ 매개변수 vs 인수

  • 매개변수(parameter) : 함수 입력으로 전달되는 값을 받는 변수
  • 인수(arguments) : 함수를 호출할 때 전달하는 입력값

함수의 위치

  • 호출되기 전에 정의되어 있어야함
  • 호출하는 코드 다음 정의되어 있으면 에러 발생
    (NameError: name 'func' is not defined)

🎈 입력값과 결괏값에 따른 함수의 형태

1. 입력값, 결괏값 있는 함수

def 함수명(매개변수):
    <수행할 문장>
    ...
    return 결괏값

2. 결괏값만 있는 함수

def 함수명():
    <수행할 문장>
    ...
    return 결괏값

3. 입력값만 있는 함수

  • 반환값 None
def 함수명(매개변수):
    <수행할 문장>
    ...

4. 입력값, 결괏값 없는 함수

  • 반환값 None
def 함수명():
    <수행할 문장>
    ...

🎈 함수 안에서 함수 밖의 변수 변경하는 방법

1. return 사용하기

a = 1
def func(a):
    a += 1
    return a
a = func(a)
print(a)

#출력 결과
#2
#2

2. global 사용하기

global 변수명: 함수 안에서 함수 밖의 변수를 직접 사용하겠다는 뜻

❗ 함수는 독립적으로 존재하는게 좋아서 global 명령어는 사용하지 않는 것 좋음

a = 1
def func():
    global a
    a += 1
func()
print(a)

#출력 결과
#2

🎈 함수 사용 예시

1. 디폴트 매개변수

매개변수를 정의할 때 매개변수의 디폴트 값을 지정해줄 수 있음

def func(a, b = 5, c = 10):
    return a + b + c

print(func(1, 2, 3))
print(func(1, 2))
print(func(1))

#출력 결과
#6
#13
#16

❗ 디폴트 매개변수는 뒤에서부터 선언해야함

# 에러 발생
def func(a = 1, b, c):
    return a + b + c

print(func(1, 2))

#non-default argument follows default argument

2. 매개변수 N개 사용

입력값이 몇 개가 될지 모를 때 packing 사용
[Python] packing과 unpacking

  • 예제 1
def func(*args):
    return sum(args)

print(func())
print(func(1, 2, 3, 4, 5))

#출력 결과
#0
#15
  • 예제 2
def func(choice, *args):
    result = 0
    if len(args) > 0:
        if choice == 'max':
            result = max(args)
        elif choice == 'min':
            result = min(args)
    return result

print(func('max'))
print(func('max', -100, 100))
print(func('min', -100, -1, -50))

#출력 결과
#0
#100
#-100
  • 예제 3 (키워드 파라미터 kwargs 사용)
    • 키워드 파라미터를 사용할 때는 매개변수 앞에 **를 붙임
    • kwargs는 딕셔너리가 되고 모든 key=value 형태의 결괏값이 딕셔너리에 저장됨
def func(**kwargs):
    print(kwargs)

func(one = 1)
func(one = 1, two = 2)

#출력 결과
{'one': 1}
{'one': 1, 'two': 2}

3. lamda

[Python] 람다 표현식(lambda Expression)
lamda 매개변수1, 매개변수2, ...: 매개변수를 이용한 표현식

add = lambda a, b: a+b
result = add(3, 4)
print(result)

#출력 결과
#7

참고
https://wikidocs.net/24
https://blockdmask.tistory.com/440

0개의 댓글