검색
검색
공개 노트 검색
회원가입로그인

[이솦] 파이선으로 배우는 AI 기초 10

요약
  • 프로그래밍 언어에서 함수는 기본 역할을 하며, 특정 기능을 수행한다.
  • 파이썬에서는 def를 사용하여 사용자 정의 함수를 만들고, 이를 통해 코드의 재사용성을 높일 수 있다.
  • 메소드는 특정 객체에 종속된 함수로, 객체지향 프로그래밍에서 중요하게 활용된다.

이솦 | EBS 소프트웨어·인공지능 교육

함수는 프로그램 언어의 기본이다. 현재는 파이썬을 배우고 있지만, C를 비롯한 많은 프로그래밍 언어는 수학의 함수와 관련이 있다. 우리가 어릴적에 수학에서 배운 함수를 그대로 구현했다고 생각해도 된다.

어떤 명령어 뒤에 () 나오는 것은 모두 함수라고 생각해도 된다. 함수는 머신러닝 뿐 아니라 모든 대부분의 프로그램에서 아주 중요한 기능을 하고 있다.

이번 시간에는 사용자 정의 함수라는 파이썬 기초 재료를 배워보자. 그리고 프로그래밍을 배울때 가장많이 나오는 소수를 찾는 프로그램을 요리해 보자.

함수

영어로는 function이라고 한다. 프로그램에서 프로그램의 기능이 많아지만 특정한 기능을 하는 함수를 만들고 필요때마다 그 함수를 호출해서 사용하는 방식으로 하면 프로그램을 효율적으로 만들수 있다.

함수를 사용하면 특정기능이 필요할때 마다 그 기능을 반복해서 사용하지 말고 함수를 호출해서 코드를 재사용 할수 있습니다.

입력한 수 5를 X라고 하고 X에 2를 더해서 출력하는 함수를 f(x)라고 한다면 f(x)=x+2로 표현할수 있다. 어릴적 수학에서는 y=x+2 라고 표현하기도 했다. 함수를 값을 입력 받아서 기능을 수행하고 결과를 돌려주는 것이다.

프로그래밍에서 함수를 사용하려면 기능을 정의하고 함수임을 선언해야 한다. 선언을 할때는 def 를 사용한다.

def 함수이름():
    기능
    return 반환값

def 뒤에 '함수 이름과 콜론(:)을 적고 다음줄에 들여 쓰기를 한 다음에 함수의 기능을 작성한다. 함수의 실행후에 결과값을 반호나하려면 마지막에 반호나 여부를 정의한다.

함수의 실행을 위해서 입력되는 변수 (함수가 전달받은 값) x 를 함수의 매개 변수라고 한다. 함수를 선언하고 사용할때 용어를 호출한다고 한다.

인수: argument 함수를 입력할때 함수의 입력값으로 넘겨 주는 값

반환값, 또는 리턴값: return value 함수가 실행되어 전달(반환) 하는 값인 y

이제 실제로 함수를 코딩해 보자.

함수의 이름은 의미에 따라서 길게 적는 게 효율적일 때도 있다.

매개변수는 함수의 동작을 위해서 함수가 입력 받는 값이다.

def f(x): #def 함수명: 형태로 함수 만들기
    y=x+2 #함수 내부에서 연산 수행
    return y #내부 연산 결과를 반환함
i=f(5)     #함수를 호출해서 사용하고 반환값을 변수 i 에 저장
print(i)

지금 함수의 코드와 매겨변수, 리턴값을 공부했다.

함수의 형태

함수는 결국 매개변수와 리턴값의 유무에 따라 크게 4가지 형태로 나눌수 있다.

자판기를 예로 들어보자. 자판기에 입력하는 돈을 매개변수라고 생각해 보자. 나오는 음료수를 리턴값이라고 생각해 보자.

유형형식설명해석
유형1def 자판기(): 자판기의기능자판기에 돈을 넣지 않고 음료수가 나오지도 않는다.매개변수가 없고 리턴값이 없다. 입력값과 결과값이 없다.
유형2def 자판기(): 자판기의기능 return 음료수자판기에 돈을 넣지 않았고, 음료수가 나왔다.매개변수가 없고 리턴값이 있다. 입력값이 없고 결과값이 있다.
유형3def 자판기(돈): 자판기의기능자판기에 돈을 넣었고, 음료수가 나오지 않았다.매개변수가 있고 리턴값이 없다. 입력값이 있고 결과값이 없다.
유형4def 자판기(돈): 자판기의기능 return 음료수자판기에 돈을 넣었고, 음료수가 나왔다.매개변수가 있고 리턴값이 있다. 입력값이 있고 결과값이 있다.

유형2는 단골식당에 가서 주문도 하지 않았는데 자리에 앉으면 늘 먹던 음식을 주는 것 처럼, 함수를 호출하기만 하면 매개 변수가 없어도 결과값을 반환한다.

유형3번은 함수안에서 처리는 해서 뭔가 동작은 하지만 반환은 하지 않는다. 그래서 프로그램에 필요한 변수에 바로 저장하거나, 무엇인가를 출력하는 기능을 내포하고 있는 경우들이 있다.

유형4는 가장 일반적인 경우이다.

def evenodd(num):
    if num % 2 == 0:  
        str = '짝수' 
    else:
        str = '홀수'  
    return str

print(evenodd(11))

주어진 숫자를 홀수인지 짝수 인지 를 하는 코드를 짜보자. 함수의 이름은 evenodd 이고 num의 매개변수로 한다.

메소드

메소드는 일종의 함수로 메소드는 함수에 포함이 된다. 메소드는 함수와 헷갈리기 쉽다. 메소드도 함수와 같은 기능을 수행한다. 함수는 범용적으로 사용하는 반면, 메소드는 특정대상을 위해서만 사용할수 있다. 그 대상은 객체 이다. 객체는 특별한 기능을 하는 파이썬 매우에 있는 프로그램 기중능 하나로 예를 들어 파일에서 데이터를 불러와서 저장하는 df라는 객체가 있다. df sum() 이렇게 하면 sum은 df를 위해서만 작동하는 메소드가 된다. 물론 sum은 다른 곳에서도 사용가능하다. 메소드는 특정 객체를 위해서만 동작하는 함수이다.

메소드와 함수를 문법적으로 구별하는건 어렵지 않다. 함수는 sum(), abs()와 같이 독립적으로 사용할수 있지만 메소드는 df.head(), df. infor(), plt.plot(), model.fit()와 같이 객체 뒤에서만 사용 가능하다. 객체 뒤에서 . 메소드 형태로 구성이다.

단순히 sum() 으로 사용하면 함수 df.sum() 형태이면 메소드이다.

머신러닝에서는 def를 사용해서 함수를 만들고, 데이터를 탐색및 시각화, 학습, 평가등 기능별로 함수를 사용할수 있다. 이미 만들어진 메소드를 써서 시각화, 학습, 평가시 객체의 메소드를 활용 가능하다. 필요에 따라서 적절한 개체와 메소드를 기억해 두면 코딩시 매우 편리하다.

실습

어떤 함수가 숫자를 매개변수로 받고 그 숫자가 소수인지 아닌지를 확인하는 코드를 짜보자.

  1. 어떤 문구 출력할지 결정

  2. 소수 정의: 2이상의 수로 1과 자신외에는 나누어 떨어지지 않은 수

#특정 숫자 x가 소수인지 판별하는 가장 기본 함수
def primenumber(x): #함수의 이름은 primenumber
    for i in range(2, x): #2부터 x-1까지의 모든 숫자
        if x % i == 0: # 나눠떨어지는게 하나라도 있으면 소수가 아님
            return "소수가 아닙니다."
    return "소수입니다." #전부 나눠떨어지지 않으면 소수
print(primenumber(13))

2부터 x-1까지의 숫자를 넘위로 정하고 연산자로 반복구문을 통해 나눠서 0이 되면 소수가 아님. 그게 아니면 for문을 빠져나와서 값을 출력해 주는것이다.

프로그램은 함수의 집합이라도 해도 과언이 아니다. 앞으로 배우게될 객체 지향 프로그래밍에서 메소드도 일종의 함수이다. 그래서 메소드 라는 이름보다는 함수로 많이 불리게 된다. 지금까지 배운것중에서 함수를 기억해 보자. print()도 함수이다. 이렇게 파이썬에서 미리 만들어줄 함수가 많은데 그것을 내장함수라고 한다.

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 80
heart
T
페이지 기반 대답
AI Chat