* 이 글은 필자가 자신이 배운 내용을 정리하기 위한 것이며, 결코 Udemy 강의를 결제하지 않은 타인의 학습을 고려하여 작성되지 않았습니다.
* 이 글을 학습에 활용하기를 원하신다면, Udemy에서 '[한글자막] Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복' 강의를 구매하시는 것을 권장드립니다.
섹션 10, 11은 이미 다룬 내용이거나 문제풀이 내용이라 스킵하고 섹션 12를 다루려고 한다.
다른 언어를 배워본 사람은 이미 많이 들어본 개념일 것이다. 지역변수, 전역변수.
지역변수란, 말 그대로 특정 지역에서만 존재하는 함수이다.
전역변수란, 모든 곳에서 존재하는 함수이다.
파이썬에서 지역변수와 전역변수가 분리되는 곳은 오로지 함수 안과 밖이다. (지금까지 배운 바로는)
if문이나, 반복문같은 곳에서는 변수 분리가 되지 않는다.
#code
count = 2
def countt() :
count = 8
count()
print(count)
와 같은 코드가 있다고 하자. 이 코드의 출력물은 어떻게 될까?
잠시 스크로를 내리지 말고 스스로 고민해보자. 앞에서 언급했던 전역변수와 지역변수의 분리를 잊지 않은 상태로 말이다.
#output
2
어? 왜 2지?
분명 함수 안에서 count = 8이라고 정의되지 않았나?
하지만 python에서 함수 내에서 정의된 함수는 그저 함수 안에서만 존재하기 때문에 함수 밖에서 정의된 변수의 값이 그대로 유지된다.
그러므로 함수 안과 밖에 다른 용도로 사용되는 두 변수를 같은 이름으로 하는 것도 기능을 따지면 크게 상관은 없다.
하지만... 코드는 항상 다른 사람이 이해하기 쉬워야하므로, 다른 목적의 변수를 굳이 같은 이름으로 만들어 다른 사람에게 혼동을 주지 말자.
그렇다면 함수 밖에 있는 변수를 안으로 가져오고, 안에 있는 변수를 밖으로 가져가려면 어떻게 하면 될까?
1. 함수 밖->안
함수 밖에 있는 변수를 안으로 가져오려면 두 가지 방법이 있다.
첫 번째 방법은 전에 배웠던 입력값이 있는 함수를 활용하는 것이다.
#code
def add(n1, n2) :
return n1 + n2
print("두 숫자를 더하는 프로그램입니다.")
a = input("첫 번째 숫자를 입력하세요.")
b = input("두 번째 숫자를 입력하세요.")
print(f"덧셈의 결과는 {add(a, b)}입니다.")
섹션 8 파라미터 글에서 다루었던 코드가 설명하기에 좋은 것 같아 가져왔다.
이 코드를 보면 분명히 변수 a, b는 함수 밖에 있다. 하지만 이를 함수의 매개변수 자리에 넣어 함수 안에서 사용할 수 있게 하였다.
이러한 매개변수(파라미터)는 함수를 사용할 때마다 인자를 달리 할 수 있다는 점에서 유용하다.
그렇다면 함수 밖에서 변수를 가져오고 싶은 것뿐이라면 어떻게 할까? 윗줄의 코드에서 함수를 정의하는 데에 사용하면 좋을 만한 변수가 있어, 함수를 실행할 때마다 사용하고 싶을 수도 있다.
#code
symbol = ["+", "-", "*", "/"]
def operations(n1, n2, ans):
global symbol
if ans == symbol[0]:
return n1 + n2
elif ans == symbol[1]:
return n1 - n2
elif ans == symbol[2]:
return n1 * n2
else:
return n1 / n2
answer = input("+, -, *, / 중 하나를 고르세요.")
a = input("첫 번째 숫자를 입력하세요.")
b = input("두 번째 숫자를 입력하세요.")
print(f"연산 결과는 {operations(a, b, answer)}입니다.")
여기에서 global은 이 함수 내에서 이 전역변수를 사용하겠다는 일종의 선언이다.
하지만 저렇게 global을 이용하면 함수를 다시 사용할 때에도 그 변수는 고정되기에, 함수 내에 가져올 전역 변수가 때마다 달라진다면 매개변수를 이용하도록 하자.
pi(3,14159265358979...)와 같은 상수를 자주 사용하기 위해 정의하고 싶다면, 일반적으로는 변수 명을 PI와 같이 대문자로 만든다. (상수라고 말했지만 굳이 '수'일 필요는 없다! 수가 아닌 고정된 리스트 등도 대문자로 표기할 수 있다.)
그렇게 만들어진 상수는 함수 내에서 따로 global을 사용해 가져올 필요가 없으므로, global을 사용할 일이 있다면 이를 먼저 상수로 표기할 수 있는지 고민해보자.
2. 함수 안->밖
함수 안에서 밖으로 변수를 가져오는 방법은 간단하다. return 사용하기...
섹션 8에서 이미 설명했기에 더 말할 필요는 없을 것 같아 생략한다.
어제 면접 외에 더 이상 남은 수능 전 면접이 없어 한동안은 코딩 공부를 열심히 할 생각이다. 블로그 운영도 당연히 할 것이고....
면접은 망쳤지만 세상에 학교가 한 곳도 아니고 어딘가에선 날 받아주겠거니 하고 살련다.
더 다룰 내용이 딱히 보이지 않아 이번 글은 여기에서 마무리하려고 한다. 섹션 12 정리 끝.
'Programming > python' 카테고리의 다른 글
Udemy Python Boot Camp Section 16 정리 | 객체지향 프로그래밍 OOP (1) | 2024.11.08 |
---|---|
Udemy Python Boot Camp Section 13 정리 | 디버깅 debugging (0) | 2024.11.07 |
Udemy Python Boot Camp Section 9 정리 | 딕셔너리 dictionary (0) | 2024.10.28 |
Udemy Python Boot Camp Section 8 정리 | 파라미터 parameter (2) | 2024.10.27 |
Udemy Python Boot Camp Section 6 정리 | 함수 function, while 반복문 (2) | 2024.09.27 |