PYTHON

pyhon기본 - 함수(클래스에선 메소드) - def

미스털이 사용자 2021. 8. 30. 18:06
반응형

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로 선언하면 함수 바깥의 변수도 자유자재로 함수 안에서 변형시킬 수 있다는 걸 알게됐습니다.

 

반응형