Python Basic Syntax(1) - Function

에이블·2022년 2월 4일
0

파이썬

목록 보기
8/20

본 게시물은 코드프레소의 code.PRESS-UP 체험단 과정을 담은 게시물입니다.

해당 게시물 수강강좌 :

금융 데이터 분석을 위한 파이썬 프로그래밍

금융 데이터 분석을 위한 파이썬 프로그래밍 시작하기

https://www.codepresso.kr/course/51

함수란?

우리가 배우려는 함수는 믹서와 비슷하다.
입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내어놓는 것, 이것이 바로 함수가 하는 일이다.

우리는 어려서부터 함수에 대해 공부했지만 함수에 관해 깊이 생각해 본 적은 별로 없다. 예를 들어 y = 2x + 3도 함수이다.

하지만 이를 수학 시간에 배운 직선 그래프로만 알고 있지 x에 어떤 값을 넣었을 때 어떤 변화에 의해서 y 값이 나오는지 그 과정에 대해서는 별로 관심을 두지 않았을 것이다.

이제 우리는 함수에 대해 조금 더 생각해 보는 시간을 가져야 한다.

프로그래밍에서 함수는 정말 중요하기 때문이다.
자, 코드프레소 강의를 통해 파이썬 함수의 세계로 깊이 들어가 보자.

함수를 사용하는 이유

프로그래밍을 하다 보면 똑같은 내용을 반복해서 작성하고 있는 자신을 발견할 때가 종종 있다. 이때가 바로 함수가 필요한 때이다.

즉 반복되는 부분이 있을 경우 "반복적으로 사용되는 가치 있는 부분"을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다" 라는 식의 함수로 작성하는 것이 현명하다.

함수를 사용하는 또 다른 이유는 자신이 만든 프로그램을 함수화하면 프로그램 흐름을 일목요연하게 볼 수 있기 때문이다.

마치 공장에서 원재료가 여러 공정을 거쳐 하나의 상품이 되는 것처럼 프로그램에서도 입력한 값이 여러 함수를 거치면서 원하는 결괏값을 내는 것을 볼 수 있다.

이렇게 되면 프로그램 흐름도 잘 파악할 수 있고 오류가 어디에서 나는지도 바로 알아차릴 수 있다.

함수를 잘 사용하고 함수를 적절하게 만들 줄 아는 사람이 능력 있는 프로그래머이다.

파이썬 함수의 구조

def 함수명(매개변수):
    <수행할 문장1>
    <수행할 문장2>
    ...

def는 함수를 만들 때 사용하는 예약어이며
함수 이름은 함수를 만드는 사람이 임의로 만들 수 있다.

함수 이름 뒤 괄호 안의 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.

이렇게 함수를 정의한 다음 if, while, for문 등과 마찬가지로 함수에서 수행할 문장을 입력한다.

매개변수와 인수

매개변수(parameter)와 인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 기억해 두자.

매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 함수를 호출할 때 전달하는 입력값을 의미한다.

def add(a, b):   # a, b는 매개변수
    return a+b

print(add(3, 4))   # 3, 4는 인수

함수의 형태

함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결괏값을 돌려준다.

입력값 ---> 함수 ----> 결괏값

함수의 형태는 입력값과 결괏값의 존재 유무에 따라 4가지 유형으로 나뉜다. 코드프레소 강의를 통해 자세히 알아보자.

일반적인 함수

입력값이 있고 결괏값이 있는 함수가 일반적인 함수이다.

def 함수이름(매개변수):
    <수행할 문장>
    ...
    return 결과값
def add(a, b): 
    result = a + b 
    return result

add 함수는 2개의 입력값을 받아서 서로 더한 결괏값을 돌려준다.

이 함수를 사용하는 방법은 다음과 같다. 입력값으로 3과 4를 주고 결괏값을 돌려받아 보자.

>>> a = add(3, 4)
>>> print(a)
7

이처럼 입력값과 결괏값이 있는 함수의 사용법을 정리하면 다음과 같다.

결괏값을 받을 변수 = 함수이름(입력인수1, 입력인수2, ...)

입력값이 없는 함수

say라는 이름의 함수를 만들었다. 그런데 매개변수 부분을 나타내는 함수 이름 뒤의 괄호 안이 비어 있다. 이 함수는 어떻게 사용하는 걸까?

>>> def say(): 
...     return 'Hi' 
... 
>>>

위 함수를 쓰기 위해서는 say()처럼 괄호 안에 아무 값도 넣지 않아야 한다. 이 함수는 입력값은 없지만 결괏값으로 Hi라는 문자열을 돌려준다. a = say()처럼 작성하면 a에 Hi 문자열이 대입되는 것이다.

>>> a = say()
>>> print(a)
Hi

이처럼 입력값이 없고 결괏값만 있는 함수는 다음과 같이 사용된다.

결괏값을 받을 변수 = 함수이름()

결괏값이 없는 함수

결괏값이 없는 함수는 호출해도 돌려주는 값이 없기 때문에 다음과 같이 사용한다.

>>> def add(a, b): 
...     print("%d, %d의 합은 %d입니다." % (a, b, a+b))
... 
>>>
>>> add(3, 4)
3, 4의 합은 7입니다.

즉 결괏값이 없는 함수는 다음과 같이 사용한다.

함수이름(입력인수1, 입력인수2, ...)

입력값도 결괏값도 없는 함수

입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결괏값도 없는 함수이다.

>>> def say(): 
...     print('Hi')
... 
>>>

이 함수를 사용하는 방법은 단 한 가지이다.

>>> say()
Hi

즉 입력값도 결괏값도 없는 함수는 다음과 같이 사용한다.

함수이름()

코드프레소 강의에서 파악한 내용은 여기까지 입니다.
기초적인 함수 문법에 대해서 알아보았는데

추가적으로 유용한 문법에 대해 알아보고 마치도록 합시다.

lambda

lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한줄로 간결하게 만들 때 사용한다.

우리말로는 "람다"라고 읽고 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.

사용법은 다음과 같다.

lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식

add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda 함수이다. 위 예제는 def를 사용한 다음 함수와 하는 일이 완전히 동일하다.

>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7

※ lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다

다음 코드프레소 강의를 통해 공부할 내용은 클래스에 관한 내용입니다.

클래스/객체/오브젝트/인스턴스에 대한 내용을 코드프레소 강의에서도 중요하고 자세하게 다루고 있으니 꼼꼼하게 포스팅 하겠습니다.

profile
꺾이지 않는 마음

0개의 댓글