[패스트캠퍼스 환급챌린지]딥러닝/Chapter 3. 파이썬

[패스트캠퍼스]Chapter 3. 딥러닝을 위한 파이썬 03-12 함수의 이해와 활용

포리셔 2023. 5. 1. 11:38

아이고... 예비군이니 뭐니 바쁘기도 하거니와 좀 쉬고 왔습니다. 다시 달려보죠!

03-12 함수의 이해와 활용

코드를 여러 케이스에 대해 반복적으로 적용해야 할 경우, 스크립트가 길어지기 마련입니다. 이를 위해서 함수, 그리고 다음 포스트에서 언급할 클래스를 적극적으로 활용하면 소스코드를 기능별로 분리할 수 있습니다. 이러면 코드의 가독성을 높일 수 있고 유지/정비가 용이해진다는 장점도 있습니다.

함수의 정의

함수는 영단어 define에서 따온 def 구문을 이용해 정의할 수 있습니다. 해당 구문 뒤에 함수의 이름, 함수에 들어갈 입력값 (그리고 반환하는 값이 있어야 할 경우 return 문) 등의 요소로 구성됩니다. 여기서 함수에 들어가는 입력값을 인수라고 합니다. 예를 들어, 숫자 3개를 입력받아 결과를 반환하는 add라는 함수를 정의해보겠습니다. 인수는 a, b, c의 세 개의 수이며, add 함수 내에서 a + b + c를 계산한 뒤, 그 결과값 result를 반환합니다.

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

이렇게 함수를 한 번 정의하면 함수 내에 정의된 구문을 여러 번 스크립트에 적용해야 할 때, 그 구문을 여러번 Ctrl+C Ctrl+V 복붙할 필요 없이 합수만 호출하면 됩니다. 스크립트를 일일이 쓰고 있는 뻘짓 내지는 삽질 수고를 덜 수 있어 아래 구문과 같이 코드가 간결해집니다.

print(add(3, 5, 7))
print(add(5, 5, 2))
print(add(100, 200, 300))

이 예시에서는 간단한 덧셈이라서 복붙을 해도 그렇게까지 스크립트가 길어지지는 않습니다. 그러나 한 번 처리해야 하는 스크립트가 10줄, 20줄, ..., 그 이상으로 많아지면 함수를 정의한 후 호출하는 것이 훨씬 효율적입니다.

함수 예시 1 - 리스트를 인수로 받는 함수

어떤 함수의 인수는 다양한 자료형을 띌 수 있습니다. 위 예제에서는 정수형 변수 세 개를 인수로 삼았지만, 아래 예제에서는 임의의 길이를 갖는 리스트를 입력으로 받는 함수를 정의해보겠습니다. 리스트 내 원소 중 가장 큰 값의 인덱스를 반환하는 함수입니다.

def find_max_index(arr):
    max_index = 0
    for i in range(len(arr)):
        if arr[max_index] < arr[i]:
            max_index = i
    return max_index

data = [7, 1, 5, 9, 3, 2, 4]
max_index = find_max_index(data)
print(max_index)

함수 예시 2 - 여러 자료형을 인수로 받는 함수

특정한 값을 가지는 원소의 인덱스를 찾는 함수를 작성해보겠습니다. 인수 arr는 리스트 자료형이며, value는 정수형 자료형으로 설정했습니다. value에 해당하는 원소가 있다면 그 원소의 인덱스를 반환하지만, 원소가 없을 경우에는 -1을 반환하도록 해보겠습니다.

def find_certain_value(arr, value):
    for i, x in enumerate(arr):
        if x == value:
            return i
    return -1 # 해당 value를 찾지 못한 경우 -1을 반환합니다

print(find_certain_value([3, 5, 7, 9], 2))
print(find_certain_value([3, 5, 7, 9], 7))

함수 예시 3 - 소수(prime number)

마지막 예시로 하나의 자연수가 주어졌을 떄, 소수인지 아닌지 판별하는 함수를 작성해보겠습니다.

def is_prime_number(x):
    if x <= 1:
        return False
    for divisor in range(2, x):
        if x % divisor == 0:
            return False
    return True

print(is_prime_number(1))
print(is_prime_number(2))
print(is_prime_number(5))
print(is_prime_number(7))
print(is_prime_number(9))
print(is_prime_number(12))
print(is_prime_number(17))

 

http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.