본문 바로가기
IT/파이썬 기초 (Python)

#018 파이썬 기초 - 함수 1편 (Python Function Part 1)

by DoitSQL 2023. 2. 28.
728x90

Python기초강의강좌, 파이썬기초강의강좌

파이썬 기초 - 함수 1편 (Python Function Part 1)   

함수 1편
함수 1편

함수는 재사용 가능한 프로그램의 조각을 말합니다. 
이것은 특정 블록의 명령어 덩어리를 묶어 이름을 짓고, 
그 이름을 프로그램 어디에서건 사용함으로써 그 블록에 포함된 명령어들을 몇 번이고
다시 실행할 수 있게 하는 것입니다. 
이를 보고 함수를 '호출한다'라고 합니다. 
사실 우리는 이미 앞에서 len이나 range와 같은 많은 내장 함수들을 사용해 왔습니다.

이러한 함수라는 것은 프로그램을 작성할 때 아마도 가장 중요한 단위가 될 것입니다 (어떤 프로그
래밍 언어에서라도). 
따라서 이 챕터에서는 함수라는 것을 다양한 관점에서 살펴보도록 하겠습니다.


독립적인 함수   

함수는 def 키워드를 통해 정의됩니다. 
def 뒤에는 함수의 식별자 이름을 입력하고, 
괄호로 감싸인 함수에서 사용될 인자(arguments)의 목록을 입력하며 
마지막으로 콜론을 입력하면 함수의 정의가 끝납니다. 
새로운 블록이 시작되는 다음 줄부터는 이 함수에서 사용될 명령어들을 입력해 줍니다. 
복잡해 보이지만, 아래 예제를 통해 함수를 정의하는 것이 얼마나 간단한지 알아봅시다.

 

예제 ( function1.py로 저장합니다):   

# Filename : function1.py
def say_hello():
    # block belonging to the function
    print('hello world')
# End of function

say_hello() # call the function
say_hello() # call the function again

▶ 실행결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\function1.py 
hello world
hello world

▶ 동작 원리 :
여기에서는 위에서 설명한 문법을 이용하여 say_hello라는 함수를 정의하였습니다.
이 함수는 어떤 인자도 넘겨받지 않으므로, 괄호 내에 매개 변수를 정의하지 않습니다. 
함수의 인수란 함수로 넘겨지는 입력값들을 말하며, 함수는 이 값을 처리하여 결과를 넘겨줍니다.

함수를 두 번 호출하는 것은 같은 코드를 두 번 작성하는 것과 같은 효과를 가진다는 것을 알아두세요.


함수와 매개 변수   

함수를 정의할 때 매개 변수를 지정할 수 있습니다. 
매개 변수란 함수로 전달되는 값들의 이름을 말하며, 함수는 이 값들을 이용해 무언가를 할 수 있습니다. 
매개 변수는 변수와 거의 같이 취급되지만, 
매개 변수의 값들은 함수가 호출될 때 넘겨받은 값들로 채워지며 
함수가 실행되는 시점에서는 이미 할당이 완료되어 있다는 점이 다릅니다.

매개 변수는 함수를 정의할 때 괄호 안에 쉼표로 구분하여 지정합니다. 
함수를 호출할 때에는, 동일한 방법으로 함수에 값을 넘겨줍니다. 
이때 함수를 정의할 때 주어진 이름을 '매개 변수'라 부르고, 
함수에 넘겨준 값들을 '인자'라 부릅니다.

 

예제 ( function_param.py로 저장하세요):   

# Filename : function_param.py
def print_max(a, b):
    if a > b:
        print (a, 'is maximum')
    elif a == b:
        print (a, 'is equal to', b)
    else:
        print (b, 'is maximum')

# directly pass literal values
print_max(3, 4)

x = 5
y = 7

# pass variables as arguments
print_max(x, y)

▶ 실행결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\function_param.py 
4 is maximum
7 is maximum

▶ 동작 원리 :

여기서는 두 매개 변수 a와 b를 사용하는 print_max라는 함수를 정의합니다. 
그리고 간단한 if…else 문을 이용하여 크기를 비교하고 둘 중에 더 큰 값을 출력합니다.

print_max 함수를 처음 호출할 때에는 값을 직접 인자로 입력하여 넘겨주었습니다.
반면 두 번째 호출 시에는 변수를 인자로 입력하여 주었습니다. 
이것은 print_max(x, y)는 변수 x에 지정된 값을 변수 a에 입력해 주고 
변수 y의 값을 변수 b에 입력해 주는 것을 의미합니다. 
따라서 이 함수는 두 경우 모두 동일하게 동작하게 됩니다.


지역 변수   

여러분이 정의한 함수 안에서 변수를 선언하고 사용할 경우, 
함수 밖에 있는 같은 이름의 변수들과 함수 안에 있는 변수들과는 서로 연관이 없습니다. 
이러한 변수들을 함수의 지역(local) 변수라고 하며, 그 범위를 변수의 스코프(scope)라고 부릅니다. 
모든 변수들은 변수가 정의되는 시점에서의 블록을 스코프로 가지게 됩니다.

예제 ( function_local.py로 저장하세요):   

# Filename : function_local.py
x = 50

def func(x):
    print('x is', x)
    x = 2
    print('Changed local x to', x)

func(x)
print('x is still', x)

▶ 실행결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\function_local.py 
x is 50
Changed local x t

o 2
x is still 50

▶ 동작 원리 :
먼저 함수의 첫 번째 줄에서 x라는 이름을 가진 변수에 담긴 값을 출력합니다. 
이때 함수 정의 위에 정의된 변수의 값을 함수의 매개 변수 x로 넘겨받은 값이 출력됩니다.

다음으로, x에 값 2를 대입합니다. 
그러나 x는 함수의 지역 변수이므로, 함수 안에서 x의 값이 대입된 값으로 변하는 반면 
메인 블록의 x는 변하지 않고 그대로 남아 있습니다.

프로그램에서 사용된 마지막 print 문을 통해 메인 블록의 x값을 출력해 보면, 
그 이전에 호출된 함수 안에서 시행된 지역 변숫값의 변화가 적용되지 않았음을 확인할 수 있습니다.

변수의 스코프(scope)가 어느 범위에 적용되는지 기억하세요.


오늘은 여기까지입니다.
다음 시간에 함수 2편으로 이어집니다.

 

감사합니다.

 

Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글