멋쟁이사자처럼 Python Basic [5. 함수] 강의

오늘은 함수에 대해 알아봅시다. 함수란 뭘까요? 수학에서 배운 함수와 프로그래밍에서의 함수는 개념이 약간 다릅니다. 함수란, 코드를 기능 단위로 묶어둔 것을 말합니다. 함수는 그 기능 자체가 함수의 존재목적이 됩니다. 아직 이해되지 않아도 괜찮습니다. 이것저것 예를 들어보고 써 보며 이해 해 봅시다.

함수의 정의

위는 인자에 2를 곱한 값을 돌려주는 함수를 그림으로 그린 것 입니다. 5를 넣으면 10을 출력 할 겁니다. 이 함수의 기능이자 목적은 인자에 2를 곱해 돌려주는 것이라고 할 수 있습니다.

함수는 왜 필요할까요?

함수는 파이썬 뿐만 아니라 프로그래밍 자체에서 매우 중요한 역할을 합니다. 함수의 기능은 크게 두 가지로 나눌 수 있습니다.

  1. 같은 코드를 반복적으로 작성하지 않아도 됩니다.

예를 들어보겠습니다. 우리가 생과일주스 집에서 일을 한다고 생각해봅시다. 딸기주스,바나나주스,키위주스 주문이 들어왔다고 해서 각 과일마다 믹서기를 따로 구매할 필요가 있을까요? 아니겠죠. 우리는 믹서기 한 대를 가지고 딸기를 넣어 딸기주스를, 바나나를 넣어 바나나 주스를 만들면 됩니다. 함수가 바로 이런 믹서기 역할을 합니다. 각 과일마다 전용믹서기를 구매하지 않아도 되니까 비용이 절감되는 것 처럼 같은 코드를 여러번 써주지 않아도 되니 코드의 양이 확실히 줄어듭니다.

  1. 코드를 작게 쪼개 일목요연하게 만들어 가독성을 높여줍니다.

일반적으로 설명해보겠습니다. 인스타그램을 만든다고 생각해봅시다.

우리는 필요한 기능들을 하나의 덩어리로 묶어 엄청나게 긴 코드를 만들 수도 있겠죠. 오류가 나면 큰 덩어리를 뒤적여서 어디가 틀렸는지 찾고 고쳐야만 합니다.

하지만 이런 기능들을 쪼개서 각각의 함수로 만들어 둔다면 직관적이고 수정이 쉬운 코드로 만들 수 있습니다. 오류 또한 어느 함수에서 발생하는지만 찾는다면 쉽게 고칠 수 있습니다.

즉 함수란, 엄청나게 길고 복잡한 코드를 기능별로 나눠서 단순하게 만들어주며 같은 코드를 반복적으로 사용하지 않아도 되게끔 해주는 문법입니다.

그럼! 함수를 직접 만들어 봅시다.

# 함수의 구성
def 함수이름(인자) :
		실행코드
		리턴값

# 리턴값이 없는 함수
def printHello(name) :
		print(name)

# 리턴값이 있는 함수
def sumNumber(num1,num2) :
		return num1+num2

defdefine의 줄임말으로, 함수를 정의하기 위해 사용하는 키워드입니다. 인자를 받는 함수이름을 정의하고 그 안에 함수내에서 실행할 코드와 리턴값을 적어주는 게 기본적인 함수의 구조입니다.

함수는 인자라는 재료를 받아 실행코드를 거치고 리턴값을 만들어 돌려줍니다. 리턴값이란 함수가 제 기능을 다 한 결과를 말합니다. 리턴값은 없거나 단 하나만 존재할 수 있습니다.

변수의 범위

함수는 독립적인 하나의 코드 덩어리입니다. 그렇기 때문에 여러개의 함수가 존재할 때 그 함수들은 각각 그 함수만의 세계를 갖고 있다고 이해할 수 있습니다.

각각의 함수 안에서만 영향력을 갖는 변수를 지역변수라고 합니다. 이러한 지역변수는 전체 영역이나 다른 함수에게 영향을 줄 수 없습니다. 하지만 함수를 포함한 전체 영역에서 영향력을 갖는 변수도 있습니다. 이러한 변수를 전역변수라고 합니다. 함수 바깥에 선언하거나, 함수 안에서 global 키워드를 사용해 전역변수를 선언할 수 있습니다.

# 전역변수, 지역변수 이해하기

a = 2

def test() :
    global b 
    b = 34
    c = 50
    print("inside test", a)
    print("inside test", b)
    print("inside test", c)

test()
print("after test", a)
print("after test", b)
print("after test", c)

자, 소스를 봅시다. a는 함수 바깥에 선언되어 있는 전역변수입니다. 그리고 b는 함수 안에 global 키워드를 통해 선언된 전역변수입니다. 그리고 c는 함수 안에 선언된 지역변수입니다. 위처럼 타이핑하고 실행해봅시다.

a와 b는 전역변수이니 함수 안에서나 바깥에서나 값이 출력됩니다. 하지만 c는 함수내에서 선언된 지역변수이니 함수 바깥에서 값을 찾지 못해 오류가 발생합니다.

  • 전역변수는 지양해야 합니다.
    함수는 코드를 기능별로 정리하기 위해 만들어진 문법입니다. 전역변수는 모든 함수들에 영향을 끼칠 수 있고 결국 함수의 의미자체를 불확실하게 만들어버릴 수 있습니다. 전역변수라는 것도 있구나, 하지만 꼭 필요하지 않으면 사용하지 않는 게 좋다! 하고 이해하시면 완벽합니다.

좋은 웹페이지 즐겨찾기