[Python 기초 정리] 함수 및 입력

서해빈·2021년 4월 18일
0

python

목록 보기
5/5

function & input

1. function

문법

def function_name(parameter):
    code

1.1 return

if you don’t explicitly use a return value in a return statement, or if you totally omit the return statement, then Python will implicitly return a default value for you. That default return value will always be None.

1.1.1 다중 반환

def func_mul(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return y1, y2, y3

x, y, z = func_mul(10)

1.1.2 튜플, 리스트, 딕셔너리 반환

def func_mul1(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return (y1, y2, y3)

q = func_mul1(20)

def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return [y1, y2, y3]

p = func_mul2(30)

def func_mul3(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return {'v1': y1, 'v2': y2, 'v3': y3}

d = func_mul3(30)

1.2 unpacking

1.2.1 *args (위치 가변 인자)

def args_func(*args): # 매개변수 명 자유
    for i, v in enumerate(args):
        print('Result : {}'.format(i), v)
    print('-----')

args_func('Lee')
args_func('Lee', 'Park')
args_func('Lee', 'Park', 'Kim')

1.2.2 **kwargs (키워드 가변 인자)

def kwargs_func(**kwargs): # 매개변수 명 자유
    for v in kwargs.keys():
        print("{}".format(v), kwargs[v])
    print('-----')

kwargs_func(name1='Lee')
kwargs_func(name1='Lee', name2='Park')
kwargs_func(name1='Lee', name2='Park', name3='Cho')

1.2.3 혼합 사용

def example(args_1, args_2, *args, **kwargs):
    print(args_1, args_2, args, kwargs)

example(10, 20, 'Lee', 'Kim', 'Park', 'Cho', age1=20, age2=30, age3=40)

1.3 중첩함수

def nested_func(num):
    def func_in_func(num):
        print(num)
    print("In func")
    func_in_func(num + 100)

nested_func(100)
# func_in_func(1000) 불가

중첩된 내부의 함수를 외부에서 호출할 수는 없다.

1.4 lambda 식

  • 메모리 절약, 가독성 향상, 코드 간결
  • 일반 함수보다 더 효율적으로 메모리를 사용
    • 함수는 객체 생성 -> 리소스(메모리) 할당
    • 람다는 즉시 실행 함수이므로 Heap에 저장(초기화) -> 사용 후 삭제
  • 남발 시 가독성 오히려 감소
def mul_func(x, y):
    return x * y
    
lambda x, y:x*y # 익명이기 때문에 변수에 담아서 쓰거나, 인자로 넘긴다.

1.5 type hint

[PEP 484] 타입 힌트는 python 3.5 버전에 추가되었다. 처음에는 함수의 반환값에 대한 자료형만 지원했지만 python 3.6 버전부터는 변수에도 타입 힌트 표기가 가능해졌다.
다만, 힌트는 어디까지나 힌트이므로 다른 타입의 값을 할당해도 오류가 발생하지는 않는다.

def tot_length1(word: str, num: int) -> int:
    word_len: int = len(word)
    return word_len * num

참고 및 출처

  • Unpacking in Python: Beyond Parallel Assignment - 바로가기
  • [Python] 파이썬 람다(Lambda) 함수 사용하기 - 바로가기
  • [python] Type Hint (타입 힌트) 정리 - 바로가기
  • [python docs] typing — Support for type hints - 바로가기

0개의 댓글