본문 바로가기
PYTHON

파이썬의 입출력(2) - 함수(변수 범위, lambda)

by 휘성티비 2024. 9. 1.

함수 안과 밖에서 동일한 변수를 사용하면 어떻게 될 지 궁금한 사람이 있을 것이다.

 

다음 예를 보면

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

vartest(a)
print(a)

언뜻 보기에는 2가 출력될 것 같지만 출력은 1이다.

이는 함수 안에서 사용하는 매개 변수와 밖에 있는 변수와는 상관이 없다는 것이다.

 

다음 예를 보면

def vartest(a):
    a = a + 1

vartest(3)
print(a)

vartest 함수를 실행 하였을 때 함수는 a에 1을 더해 4라는 결과가 나오지만 print(a) 부분에서 오류가 발생한다. print에서 사용한 a변수를 정의되지 않았기 때문이다. 이는 안과 밖에서 변수는 다르다는 것이다.

 

 

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

return 

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

a = vartest(a) 
print(a)

vartest 함수를 a를 리턴하는 형태로 변경했고, a = vartest(a)라고 적으면 a에 vartest 함수의 리턴값이 들어간다.

이 때도 함수 안의 a 와 밖에 a는 다른 것이다.

 

global

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

vartest() 
print(a)

함수 안에서 밖에 있는 a를 사용하기 위해 global 키워드를 사용할 수 있다. 그렇다면 전역 변수로써 사용할 수 있다. 하지만 함수는 독립적이고 외부 변수에 종속적인 모습은 좋은 것이 아니기에 첫 번째 방법을 권장한다.

 

lambda

lambda는 함수를 생성할 때 사용하는 예약어로, def와 동일한 역할을 한다.

보통 함수를 한 줄로 간결하게 만들 때 사용하고 def를 사용할 정도로 굳이 복잡하지 않으면 사용한다.

 

사용법은 다음과 같다.

함수_이름 = lambda 매개변수1, 매개변수2, ... : 매개변수를_이용한_표현식

 

한번 만들어보자

>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7
lambda로 만든 함수는 return이 없어도 표현식의 결괏값을 리턴한다.