본문 바로가기

프로그래밍언어/Python

ch04. 파이썬 프로그래밍 프로그램 입출력 (함수)

반응형

1. 함수

■ 함수

- 입력값에 대한 로직을 수행하고 그 결과값을 반환한다.

- 함수를 통해서 프로세스, 로직을 간단하게 할 수 있다.

■ 함수 구조

- 파이썬 함수 구조

def function_name(args1, args2):
    statement1
    statement2
    ...

    return result

- def: 함수 선언을 위한 예약어

- 함수에 입력값이나 결과값이 없을 수 있다.

※ parameter (매개변수) vs argument (인수, 전달인자)

- parameter: 함수에 입력으로 전달된 값을 받는 변수, 함수의 정의 부분에 나열되어 있는 변수들

- argument: 함수를 호출할 때 전달하는 입력값, 함수 호출 시 전달되는

■ 매개변수 응용

- 함수 호출 시 매개변수 지정

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

# paramter a, b를 지정
result = add(a = 4, b = 6)

- 입력값의 개수를 알 수 없는 경우

# *매개변수 형태로 변경
def func_name(*args):
    statement
    ...

# *args
def add_nums(*args):
    result = 0
    for num in args:
        result += num
    return result

print(add_nums(1,2,3))    # 6

# *args 와 다른 변수를 함께 사용
def add_mul(choice, *args): 
    if choice == "add": 
        result = 0 
        for i in args: 
            result = result + i 
    elif choice == "mul": 
        result = 1 
        for i in args: 
            result = result * i 
    return result 

print(add_mul('add', 1,2,3,4,5))    # 15
print(add_num('mul', 1,2,3,4,5))    # 120

※ kwargs: 키워드 파라미터

- 키워드 파라미터 사용시에 **를 앞에 붙여서 사용한다.

- **을 붙이면 kwargs는 딕셔너리가 되고 key, value 형태의 결과값이 저장된다.

def print_kwargs(**kwargs):
    print(kwargs)

print_kwargs(a = 1, b = 2)    # {'a': 1, 'b': 2}

- 매개변수 초기값 설정

# c의 값이 입력되지 않아도 1로 초기화가 되어있다.
def param_init(a, b, c = 1):
    print(a + b + c)

print(param_init(1, 2))    # 4
print(param_init(1, 2, 3)) # 6

■ 함수의 결과값

- 함수의 결과값 (return 값)은 언제나 하나이다.

- 변수 할당과 같이 여러개의 값을 return하는 경우 튜플형으로 반환된다.

■ 변수 접근 범위 - local, global

- 기본적으로 함수 내에서는 매개변수 또는 함수 내의 변수만 접근 가능하다.

- 동일하게 함수 외부에서는 함수 내의 변수에 접근할 수 없다.

- 함수 영역 외부에서 변수에 접근하는 방법

1) return: 반환값을 통해서 외부에 함수 내부 변수의 값을 반환한다.

2) global: 글로벌 변수 선언을 통해서 외부 변수에 접근한다.

a = 1 
def vartest(): 
    global a 
    a = a+1

vartest()   # 변수 a에 1이 더해진다.
print(a)    # 2

■ lambda

- 함수를 생성할 때 쓰는 예약어로 보통 한줄로 간결한 함수를 선언할 때 사용한다.

- def와 동일한 역할을 한다.

- return이 없어도 결과값을 돌려준다.

# lambda args1, args2: {exp}
add = lambda a, b: a + b
print(add(1, 3))    # 4
반응형