Zeta Oph's Study

[Python 기초 문법] 함수 (Function) 본문

프로그래밍/Python

[Python 기초 문법] 함수 (Function)

Zeta Oph 2024. 2. 21. 12:39

함수의 선언과 호출

def function_name(parameter):
    code1
    code2
    ...
    
    return result

 

def : 함수 선언 시 사용되는 예약어

parameter : 매개변수 - 여러 개일 경우 ,로 구분한다.

result라는 결과 값을 반환한다.

 

매개변수와 리턴값이 없는 함수도 가능 : 리턴값이 없을 경우, 리턴값을 출력하면 None이 된다.

 

함수 이름을 통해서 호출할 수 있다.

def div_func(n1, n2):
    return n1/n2

res = div_func(1, 2)
print(res)
TERMINAL

0.5

 

매개변수는 순서대로 전달된다. 그러나 직접 매개변수를 지정하여 함수를 호출할 수도 있다.

def div_func(n1, n2):
    return n1/n2

res = div_func(n2 = 1, n1 = 2)
print(res)
TERMINAL

2.0

매개변수 초깃값 지정

def f1(p1, p2=init1, ...):
    code
    ...

 

매개변수를 받는 칸에 초깃값 지정 가능 : 초깃값이 지정된 매개변수는 값을 지정하지 않고 호출하여도 초깃값으로 지정되어 함수가 실행된다.

매개변수를 지정하여 호출하는 것이 아니라면, 매개변수 대입 순서가 헷갈려 오류가 생기므로, 초깃값을 지정해주는 매개변수는 맨 뒤에 몰아넣어준다.


여러개의 매개변수를 받는 함수

매개변수의 개수가 정해져 있지 않은 경우, 즉 몇 개가 입력될 지 모르는 경우는 *매개변수 로 사용할 수 있다.

(관용적으로 *args 로 사용)

def func(*args):
    code
    ...

 

이렇게 된 경우, 여러개로 전달된 매개변수들은 args라는 이름의 튜플로 묶여서 함수 내에서 사용되게 된다.

 

ex) 총합

def plus(*args):
    res = 0
    for i in args:
    	res = res + i
    return res
    
print(plus(1, 2, 3, 4, 5, 6, 7, 8, 9))
TERMINAL

45

키워드 매개변수

**매개변수 형태는 key=value 형태로 입력된 것들을 딕셔너리로 바꾸어 주어 함수 내에서 사용하게 해준다.

(관용적으로 **kwarg 사용)

def func(**kwarg):
    print(kwarg)

func(a=1, b=2)
TERMINAL

{'a': 1, 'b': 2}

 

 

<주의 사항>

일반 매개변수와 *args, **kwargs 의 순서

입력 순서가 일반 매개변수 - *args - **kwarg 순서로 전달하여 함수를 호출해주어야 한다.

(그렇지 않으면 오류 발생 : 어디까지 *인지, **인지 구분을 할 수 없기 때문)


함수 내 변수의 효력 범위

함수 안에서 선언한 변수의 효력 범위 : 함수 내

- 함수 밖에 같은 이름의 변수가 있어도 함수 안의 변수에 대해서만 작동한다.

- 함수 안의 변수를 return 없이 함수 밖에서 호출할 수 없다.

 

매개변수 전달 없이 함수 밖의 변수에 접근/수정하고 싶다면 global을 사용해주어야 한다.

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

2

 

위 코드와 같이 global 변수명 을 통해 전역 변수를 함수 안에서 사용하겠다는 선언 이후 작업을 해주어야 전역변수에 접근할 수 있다.


lambda 예약어

def와 같은 역할로, 함수 선언에 사용된다. 다만 한줄로 간결하게 선언할 때 사용한다는 차이점이 있다.

funct_name = lambda par1, par2, ... : code_with_par

 

lambda 함수는 표현식에 return이 없어도 표현식의 결과값을 return한다.

선언한 함수의 사용 또한 함수명(파라미터) 로 사용할 수 있다.

add = lambda a, b : a + b
c = add(1, 2)
print(c)
TERMINAL

3