wn42
코딩이랑 이것저것
wn42
전체 방문자
오늘
어제
  • 분류 전체보기 (113)
    • 프로그래머스 (23)
      • LV1 (11)
      • LV2 (1)
      • LV3 (3)
      • 연습 (8)
    • 딥러닝 공부 (0)
      • 머신러닝&딥러닝 이론 (0)
    • 임베디드 (17)
      • Adventure Design (1)
      • 센서기반모바일로봇 (5)
      • ROS (9)
      • Google Coral (2)
    • C++ (38)
      • C++ 기초 (34)
      • 자료구조 및 알고리즘 (4)
    • Python (14)
      • 기본 파이썬 문법 (6)
      • Python 기초 (8)
    • 빅데이터 (9)
      • 빅데이터 첫걸음 시작하기(국비지원) (5)
      • 빅데이터 공부 (4)
    • 알고리즘 공부 (2)
      • 기본 알고리즘 (2)
    • 전자공학 (10)
      • 반도체 공정 (3)
      • 무선데이터통신 (7)
      • 반도체공학 (0)
    • C# (0)
      • C# 기본 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • stl
  • K디지털크레딧
  • 파이썬
  • Python
  • 프로그래머스
  • 내일배움카드
  • 스택/큐
  • 클래스
  • 패스트캠퍼스
  • 정렬
  • 스택
  • 변수
  • 인스턴스
  • c++
  • 큐
  • 딥러닝
  • ROS
  • google coral
  • 바이트디그리
  • 데이터분석 인강
  • 조건문
  • 노드
  • 데이터분석
  • 상속
  • 빅데이터
  • numpy
  • 소멸자
  • Queue
  • 반복문
  • 빅데이터 첫걸음 시작하기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
wn42

코딩이랑 이것저것

[Python] 함수 (Function)
Python/Python 기초

[Python] 함수 (Function)

2023. 3. 3. 16:34

 함수 

일정한 작업을 수행하는 코드를 정의한 것

x에 따라 출력이 바뀐다

 

함수 정의

  • 함수는 def 키워드를 이용하여 정의한다.
  • 함수는 다음 요소를 포함할 수 있다.
    • 매개변수: 함수 내에서 사용되는 변수를 전달받기 위해 정의
    • return: 함수에서 특정 값을 반환하기 위해 사용
  • 반환 값은 무조건 하나만 존재해야 함에 유의한다.

 

함수 기본 구조

입력 값과 반환 값이 있는 함수

def 함수명(매개변수):
    실행 코드1
    실행 코드2
    return 반환값

 

입력 값은 있으나 반환 값이 없는 함수

def 함수명(매개변수):
    실행 코드1
    실행 코드2

 

입력 값은 없고 반환 값이 있는 함수

def 함수명():
    실행 코드1
    실행 코드2
    return 반환값

 

입력 값과 반환 값이 모두 없는 함수

def 함수명():
    실행 코드1
    실행 코드2

 

함수 예제

숫자 2개를 더하는 함수 (반환 값 O)

def add_func(a, b):
    return a + b

result = add_func(10, 5)
print(result)
15

 

더한 값을 출력하는 함수 (반환 값 X)

def add_func(a, b):
    print(a + b)

add_func(10, 5)
15

 

매개변수 값 미리 지정하기

def add_func(a=10, b=5):
    print(a + b)

add_func()         # 인수를 정하지 않으면 10 + 5
add_func(20, 30)   # 인수를 정하면 해당 값으로 연산
15
50
  • 디폴트 매개변수를 지정할 수 있으며, 만약 초기값이 없는 매개변수가 있다면 디폴트 매개변수는 꼭 해당 매개변수 뒤에 적어야 한다.
  • 따로 매개변수를 입력하지 않으면 디폴트 값으로 대체된다.

 

*args: 매개변수가 미지수인 함수

  • 입력이 몇 개인지 모르는 경우에 " *매개변수 "를 사용하여 함수를 정의할 수 있다.
  • 가변 매개변수라고 한다.
  • args란 arguments의 약자로, 꼭 이 이름으로 매개변수명을 지정할 필요는 없으나 관행적으로 이를 사용한다.

함수 기본 구조

고정적으로 받는 매개변수가 없는 경우

def 함수명(*args):
    실행 코드1
    실행 코드2
    return 반환값

 

고정적으로 받는 매개변수가 있는 경우

def 함수명(매개변수1, ..., *args):
    실행 코드1
    실행 코드2
    return 반환값
  • *args 앞에 고정적으로 받는 매개변수를 정의할 수 있다.
  • 반드시 *args 앞에 적어야 함에 유의하자.

 

함수 예제

더하기 함수

def add_func(*args):
    result = 0
    for i in args:
        result += i
    return result

result = add_func(1, 2, 3, 4, 5)
print(result)
15
  • 입력이 몇 개든 상관없이 값을 더하는 함수를 정의하였다.

 

더하기&곱하기 함수

def math_func(command, *args):
    if command == 'add':
        result = 0
        for i in args:
            result += i
    elif command == 'mul':
        result = 1
        for i in args:
            result *= i
    return result

result1 = math_func('add', 1, 2, 3, 4, 5)
result2 = math_func('mul', 1, 2, 3, 4, 5)
print(f'result1의 결과: {result1}')
print(f'result2의 결과: {result2}')
result1의 결과: 15
result2의 결과: 120
  • command에 따라 더하기와 곱하기 연산 중 하나를 택해 진행하는 함수를 구현하였다.
  • 이처럼 고정적으로 받는 매개변수를 정의할 수 있다.

 

**kwargs: 매개변수를 딕셔너리로 변환

  • **를 붙여 매개변수를 설정하면, 인수를 받을 시 이를 함수 내부에서 딕셔너리로 변환한다.
  • 키워드 매개변수라고 한다.
  • 매개변수가 많은 경우 값에 대한 명칭을 명시함으로써, 매개변수를 잘못 전달하는 실수를 예방할 수 있다.
  • kwargs란 keyword arguments의 약자이며, 굳이 이 이름으로 매개변수를 정의할 필요는 없으나 관행적으로 이를 사용한다.

함수 예제

매개변수를 출력하는 단순한 함수

def printf(**kwargs):
    print(kwargs)

printf(a=10)
printf(age='26', name='kk')
{'a': 10}
{'age': '26', 'name': 'kk'}
  • 결과를 보면 알 수 있듯이 대입식 좌측에 있는 값을 key, 우측에 있는 값을 value로 갖는 딕셔너리로 변환되었음음을 알 수 있다.

 

*args와 **kwargs를 동시에 사용하는 함수

  • args와 kwargs를 동시에 사용할 수 있다.
  • 이때 args가 무조건 kwargs보다 앞에 있어야 한다. 그렇지 않다면 오류가 발생한다.
def math_func(*args, **kwargs):
    if list(kwargs.values())[0] == 'add':
        result = 0
        for i in args:
            result += i
    elif list(kwargs.values())[0] == 'mul':
        result = 1
        for i in args:
            result *= i
    return result

result1 = math_func(1, 2, 3, 4, 5, type='add')
result2 = math_func(1, 2, 3, 4, 5, type='mul')
print(f'result1의 결과: {result1}')
print(f'result2의 결과: {result2}')
result1의 결과: 15
result2의 결과: 120

 

global 명령어

  • 함수 내에서 사용하는 변수들은 기본적으로 지역변수이지만, global 명령어를 사용하면 외부에서 선언된 변수를 함수 내부로 가져와 값을 변경할 수 있다.
  • 전역변수와 같은 기능을 한다.
result = 0
def add_func(*args):
    global result     # global 명령어
    for i in args:
        result += i

add_func(1, 2, 3, 4, 5)
print(result)
15

 

lambda 표현식

  • 간단하게 함수를 구현할 때 사용하는 예약어이다.
  • lambda로 만든 함수는 return 키워드를 적지 않아도 결과값을 반환한다.
add = lambda a, b: a + b
print(add(10, 5))
15
    'Python/Python 기초' 카테고리의 다른 글
    • [Python] 모듈 (Module)
    • [Python] 클래스 (Class)
    • [Python] 반복문 (Loop)
    • [Python] 조건문 (Conditional Statements)
    wn42
    wn42
    코딩이랑 이것저것 하는 블로그

    티스토리툴바