함수 안과 밖에서 동일한 변수를 사용하면 어떻게 될 지 궁금한 사람이 있을 것이다.
다음 예를 보면
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이 없어도 표현식의 결괏값을 리턴한다.
'PYTHON' 카테고리의 다른 글
파이썬 비기너 프로젝트 - 매드립스 (1) | 2024.09.09 |
---|---|
파이썬 비기너 프로젝트 (0) | 2024.09.09 |
파이썬의 입출력(1) - 함수 (0) | 2024.08.31 |
파이썬의 사칙연산 계산기 (0) | 2024.08.24 |
파이썬 가위바위보 프로그램 (0) | 2024.08.24 |