About Python – “함수 – function”

About Python – “함수 – function”

1월 5, 2022

프로그래밍에서의 함수

함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미합니다.

함수는 대부분의 프로그래밍 언어에서 지원하는 기능입니다. 하나의 큰 프로그램을 여러 부분으로 나누어 줌으로서 그것의 일부분을 수정하기 쉽다는 장점을 가집니다. 파이썬에서도 함수가 존재하는데, 파이썬에서는 함수를 어떻게 사용하는 것일까요?

파이썬의 함수(function)

def 함수명(파라미터):
    수행하고자 하는 코드
    수행하고자 하는 코드

파이썬에서 함수는 위와 같이 사용합니다.

파이썬의 함수 – 매개변수를 지정해서 함수 호출하기

def ave(score1, score2, score3):
    return (score1+score2+score3)/3

result = ave(score1=20, score2=40, score3=60)
print(result)

흥미로웠던 것은, 함수를 호출할 때에 매개변수를 직접 지정하여 호출할 수도 있다는 것이었습니다. Swift의 함수 사용법과 굉장히 유사한 것 같습니다.

파이썬의 함수 – 가변 매개변수(매개변수 값이 여러 개가 들어가야 하는 경우)

def mult(*a):
    print(type(a))

mult(1,5,6,8)
# <class 'tuple'>

함수를 정의하는 부분에 ‘*‘ 를 붙이면 함수의 매개변수를 여러 개로 입력받을 수 있습니다. 위의 예제에서 확인할 수 있듯이, 매개변수 앞에 ‘*‘ 를 붙이면 파이썬은 그것을 튜플로 만들어 줍니다.

def mult(*args):
    result = 1
    for i in args:
        result = result * i
    return result

x = mult(3,4,5)
print(x)

튜플은 이터러블 객체이므로 for문을 이용해서 반복할 수 있습니다.

파이썬의 함수 – return

def add_sqre_mul(a,b):
    return a+b, a*a, a*b, a-b

x = add_sqre_mul(4,6)
print(x)
print(type(x))

# (10, 16, 24, -2)
# <class 'tuple'>

return 문에 a+b, a*a, b*b, a-b 를 반환하도록 하였습니다.

실제로 x 에 함수의 return값을 바인딩하고 그것을 출력해 보면, 튜플의 형태로 출력되는 것을 볼 수 있습니다. 결괏값이 2개가 되는 것이 아니라, 한 개로 출력되는 것입니다.

def some_function(a):
    return (a*2)
    print("이것은 some_function()입니다. ")
some_function(4)

위의 코드를 살펴봅니다. some_function 이라는 함수는 매개변수의 값을 2배 해서 돌려주고, "이것은 some_function()입니다." 를 출력하도록 되어 있습니다. 하지만 함수를 호출하면 아무 값도 출력되지 않습니다.

그 이유는 return을 만나는 순간 그 결괏값을 돌려주고 함수를 바로 빠져나가 버리기 때문입니다.

파이썬의 함수 – 파라미터 기본값 설정

def my_score(a = 100):
    print("나의 시험 점수는, %a점!" % a)

my_score()

# 나의 시험 점수는, 100점!

my_score()이라는 함수에는 a라는 매개변수가 있어야 합니다. 하지만 아래의 함수 호출 부분을 보면 인자를 써넣어 두지 않았습니다.

그러나 프로그램은 오류를 내지 않고 잘 작동합니다. 그 이유는 바로 위에서 매개변수 a100이라는 기본값을 미리 설정해 두었기 때문입니다.

def my_score_ave(math = 100, kor = 100):
    ave = (math+kor)/2
    print("시험 평균 점수는 %s" % ave)

my_score_ave()
# 시험 평균 점수는 100.0


def my_score_ave2(math = 100, kor):
    ave = (math+kor)/2
    print("시험 평균 점수는 %s" % ave)

my_score_ave2(20)
#SyntaxError: non-default argument follows default argument

초기화하고자 하는 매개변수는 항상 뒤쪽에 두어져야 합니다.

파이썬의 lambda

람다 함수(람다식) 는 프로그래밍에서 익명 함수를 지칭하는 용어입니다.

def my_score_ave(math = 100, kor = 100):
    ave = (math+kor)/2
    print("시험 평균 점수는 %s" % ave)

my_score_ave()
# 시험 평균 점수는 100.0

# 위의 식을 람다식으로!
# lambda 매개변수, 매개변수, : 표현식
lambda_example = lambda sci = 50, soc = 50:  print("과탐, 사탐의 평균 점수는" , (sci+soc)/2)
lambda_result = lambda_example() # lambda_result 에 lambda_example을 바인딩하며 호출

my_score_avelambda 식으로 표현한 예제입니다. 람다 함수를 lambda_result에 바인딩해줌으로서 호출된 것을 볼 수 있습니다.

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.