def는 함수로 쓰이고 클래스(class)라는 곳에선 메소드로 쓰입니다.
함수와 메소드의 기능은 거의 동일하다고 생각합니다. 그래서 여기서는 함수에 대해서 알아보겠습니다.
함수는 "약속된 연산"이라고 보면 될 것 같아요.
예를 들어 함수a가 있다고 가정합시다.
함수a에 1을 집어넣었더니 5가 나왔습니다.
2를 집어넣었더니 8이 나왔습니다.
함수a는 어떻게 구성돼있을까요?
함수a(입력숫자) :
결과값 = (입력숫자 * 3) + 2
이런식으로 구성되어있었습니다. 이를 python으로 나타내면?
def a(num) :
result = num * 3 + 2
return result
다음과 같이 나타낼 수 있죠.
첫번째 예) 구구단 함수
print('구구단 출력하기\n')
def googoo(m) :
print('***', m, '단***')
for n in range(1, 10) :
print(f'{m} * {n} = {m*n}')
print('\n')
go_googoo = input('띄어쓰기 구분해서 출력하고자 하는 구구단을 써주세요.').split()
for z in go_googoo:
z = int(z)
if z > 9 or z < 2:
print('범위에서 벗어났어요. (범위 : 2~9)\n')
else :
googoo(z)
(3행) 구구단 함수를 만들었습니다. 우선 ~단인지 출력하고 범위에 맞게 곱셈결과를 출력하도록 구현했습니다.
(9행) split이란 내장함수(이미 python에서 만들어져서 제공되는 함수)가 있는데 이건 띄어쓰기를 구분해서 문자열을 리스트로 만드는 것입니다.
만약 1 2 3이라는 문자열을 split한다면 [1, 2, 3]이라는 리스트타입으로 변하겠죠.
결과는 다음과 같습니다.

두번째 예) 지역변수와 전역변수를 함수를 이용해서 이해하기
print('지역변수, 전역변수\n');
a = 1
def set_a() :
a = 3
print('함수내 지역변수 a = ', a)
set_a()
print(f'함수바깥 변수 a = {a}')
b = 2
def set_b() :
global b
print(f'함수에 선언된 global변수 b = {b}')
b = 4
set_b()
print('함수바깥 변수 b = ', b)
(3행) a라는 변수를 주목해주세요. a는 함수 바깥에서 1이란 값으로 설정돼있습니다.
(6행) set_a함수내에 별도로 a를 만들어 출력했네요.
(13행) global을 써서 전역변수 선언을 해줬습니다. 이럴 경우 함수에 출력되는 게 어떤 값이 나오는지,
그리고 b=4라고 함수내에 선언했는데 과연 함수바깥 변수에게도 영향을 줄지 보겠습니다.

global로 선언하면 함수 바깥의 변수도 자유자재로 함수 안에서 변형시킬 수 있다는 걸 알게됐습니다.
'PYTHON' 카테고리의 다른 글
파이썬 - 기본 타입 - int, float, str, list, dict (0) | 2021.08.31 |
---|---|
python - 반복문 멈추게 하기 (break) (0) | 2021.08.31 |
반복문1 - for (0) | 2021.08.30 |
반복문2 - while (0) | 2021.08.30 |
파이썬을 이용해서 Hello World 출력해보기 (print) (0) | 2021.08.27 |