본문 바로가기
Python/Do it! 점프 투 파이썬

[Do it! 파이썬] 4. 함수

by Couldi 2023. 9. 27.
반응형

23. 9. 27.

- Could -

이 글은 막연히 python을 공부해야하나 라는 불안감으로 python으로 프로그래밍을 입문하는 사람들을 위한 글입니다.
python을 시작하는 많은 분들이 보는 '점프 투 파이썬' 책을 중심으로 '필자의 주관'이 잔뜩 담긴 설명을 추가하여, 파이썬 공부에 흥미를 붙이고 책 완주 후의 계획을 수립할 수 있도록 쓰여졌습니다.
'점프 투 파이썬'은 wikidoc(https://wikidocs.net/book/1)으로 무료로도 확인 가능합니다.

1. 함수
2. 함수의 정의
3. 함수의 사용
4. 지역 변수(Local Variables)와 전역 변수(Global Variables)(w/ chatGPT)

1. 함수

이것은 바로 함수상자

초등학교 수학시간에 연산문제를 풀때 저런 상자를 마주했던 기억이 있다. 저 네모난 상자 안에 숫자를 집어넣고, 상자 안에 적힌 규칙대로 사칙연산을 한 후 답을 구하는 그런 문제들이였다. 프로그래밍에서 얘기하는 함수는 저기 있는 네모난 상자를 코드로 바꾸어 표현한거라 생각하면 쉽다.

def 함수이름(매개변수1, 매개변수2, ...):
    # 함수의 본문
    # 작업 수행
    return 반환값

가장 기본이 되는 함수이다.

하나 생각했으면 하는 개념은, 함수도 변수와 마찬가지로 상자의 일종이라는 점이다. 조금 특이한 상자다. 변수라는 상자를 만들어 데이터를 넣어두면 보관만 하는 상자라면, 함수는 데이터를 넣으면 가공을 거쳐 새로운 데이터를 만들어주는 마법상자다.

그렇다면 함수를 왜 사용하는 걸까? 이유는 간단하다. '반복을 최소화'하기 위해서다. 엑셀을 다뤄봤으면 다양한 함수들을 사용해본 적이 있을 것이다. 왜 함수를 사용했는가? 단순하고 반복적인 작업, 혹은 자주쓰는 기능이나 개념을 빠르게 사용하기 위해서다. 프로그래밍에서 함수를 사용하는 목적도 동일하다.

2. 함수의 정의

def 함수이름(매개변수1, 매개변수2, ...):
    # 함수의 본문
    # 작업 수행
    return 반환값

1. def: 함수를 정의하기 위한 키워드(예약어)로, "define"의 줄임말이다.
2. 함수이름: 함수의 이름을 정의하는 부분. 함수를 식별하는 데 사용된다. 파이썬에서는 일반적으로 snake_case를 사용해서 명명한다.
3. (매개변수1, 매개변수2, ...): 함수가 받을 입력 값을 정의하는 부분. 있을 수도, 없을 수도 있다. 함수의 쓰임에 맞추어 정의한다. 이때 매개변수를 Parameter라고 부른다.
4. : (콜론): 함수 정의의 끝을 나타냄. 콜론 뒤에는 함수 본문이 온다. 일반적으로 다음줄부터 본문을 적는다.
5. 함수 본문: 함수가 수행할 작업을 정의한다. 들여쓰기를 잘하는 것이 중요하다. 일반적으로 def보다 스페이스 4칸 만큼 들여쓰기를 해서 코드 블록을 구성한다.

6. return: 함수가 결과 값을 반환하는 데 사용되는 키워드. 기본적으로 대다수의 함수는 return을 가지지만, 함수에 따라 없을 수도 있다.

두 숫자를 더하는 함수를 작성해보자.

def add(a, b):
    result = a + b
    return result

3. 함수의 사용

함수를 정의 했다면, 원하는 곳에서 함수를 사용해주면 된다.

# 함수만 사용하는 경우
함수이름(인수1, 인수2, ...)

# 변수에 함수의 return 값을 저장하는 경우
변수 = 함수이름(인수1, 인수2, ...)

1. 함수이름: 호출할 함수의 이름. 정의한 함수의 이름을 적는다.
2. (인수1, 인수2, ...): 함수에 전달할 입력 값을 넣는 부분. 인수(Argument)라고 부른다.
3. 변수: 함수가 반환하는 값이 저장한다.

앞서 정의했던 add함수를 사용하면 다음과 같이 사용할 수 있다.

sum = add(3, 5)

4. 지역 변수(Local Variables)와 전역 변수(Global Variables)(w/ chatGPT)

파이썬에서 함수와 관련된 지역 변수와 전역 변수에 대해 설명하겠습니다.

1. 지역 변수 (Local Variables):
지역 변수는 함수 내에서 정의되고 사용되는 변수로, 함수 내부에서만 유효합니다. 함수가 호출될 때 생성되며, 함수가 종료되면 해당 변수도 사라집니다. 다른 함수에서는 해당 변수에 접근할 수 없습니다. 지역 변수는 함수 내에서 사용되는 임시 변수로 주로 함수의 내부 계산에 사용됩니다.

예를 들어:

def my_function():
    x = 10  # x는 함수 내의 지역 변수
    print(x)

my_function()
print(x)  # 에러: 함수 밖에서는 x에 접근할 수 없음

위의 코드에서 xmy_function 함수의 지역 변수로 함수 내부에서만 사용 가능합니다.

2. 전역 변수 (Global Variables):
전역 변수는 함수 밖에서 정의되고 사용되는 변수로, 프로그램 어디에서나 접근할 수 있습니다. 전역 변수는 프로그램이 실행되는 동안 유지되며, 함수 내에서도 사용할 수 있습니다. 단, 함수 내부에서 전역 변수를 수정하려면 global 키워드를 사용해야 합니다.

예를 들어:

x = 10  # x는 전역 변수

def my_function():
    global x  # x를 전역 변수로 선언
    x = 20   # 전역 변수 x를 수정
    print(x)

my_function()
print(x)  # 함수 내에서 수정된 x 값이 유지됨

위의 코드에서 x는 전역 변수로, 함수 내에서 global 키워드를 사용하여 전역 변수로 선언하고 수정하였기 때문에 함수 내에서도 값이 변경되고, 함수 외부에서도 변경된 값이 유지됩니다.

전역 변수와 지역 변수의 주의사항:

  • 전역 변수와 지역 변수의 이름이 동일한 경우, 함수 내에서 해당 이름을 사용하면 함수 내의 변수가 우선적으로 사용됩니다. 함수 내에서 전역 변수를 수정하려면 global 키워드를 사용해야 합니다.
  • 함수 내부에서 전역 변수를 변경하면, 해당 함수 외부에서도 변경된 값이 유지됩니다. 이러한 동작에 주의해야 합니다.
  • 함수 내에서 전역 변수를 읽는 것은 문제가 없지만, 함수 내에서 가능한한 지역 변수를 사용하여 변수 스코프를 관리하는 것이 권장됩니다.

변수의 범위와 스코프를 이해하고 적절하게 사용하는 것은 파이썬 프로그래밍에서 중요한 개념 중 하나입니다.

반응형

댓글