Coding & Programming/Python 기초(A-Z)

[Python:파이썬:기초] 13. 함수(Functions)

mainCodes 2021. 5. 22. 09:04

[Python:파이썬:기초] 13. 함수(Functions)

 

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و

 

함수는 함수가 호출되었을 때 실행되는 코드 모음입니다.  파이썬의 함수도 일반적인 프로그래밍 언어들과 같이 프로그래밍할 때 반복적으로 사용되는 코드를 모아 놓은 것입니다. 보통 입력값(파라미터)에 따라 어떤 기능을 수행하고 결과를 반환하는 기능을 함수로 만들게 됩니다. 중복된 기능을 함수로 정리하게 되면 코드가 간결해지고 읽기가 편하게 되어 가독성도 좋아지게 됩니다.

 

함수의 기본 구조

 

다음은 파이썬 함수의 기본 구조들입니다.

 

#파라미터(입력값)와 반환값이 없는 함수의 정의
def 함수명():
    코드1
    ...

#파라미터와 리턴값이 있는 함수의 정의
def 함수명(파라미터1, 파라미터2...파라미터n):
    코드1
    ...
    retrun [리턴값]

#n개 파라미터, 파라미터 갯수를 알 수 없을 때
#파라미터 앞에 '*'를 사용
def 함수명(*파라미터):
    코드1
    ...    

#키워드 파라미터를 사용할 때
#파라미터 '**'를 사용
def 함수명(**파라미터):
    코드1
    ...   

#람다 함수 정의
lambda 파마리터1, 파라미터2...파라미터n : 표현식

 

파라미터는 개발자가 함수를 만들 때 함수의 기능을 생각하여 정하게 되며 리턴값은 함수가 종료되면서 함수를 호출한 호출자(Caller)로 결과를 반환하는 용도로 이 또한 개발자가 정의하게 됩니다.

 

예제는 파이썬 함수의 여러 정의 방법과 호출하는 방법을 보여줍니다.

 

🔗 함수 예제(Functions Example):

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
i1 = 1234    #number
s1 = 'Hello' #String
l1 = ['banana''grape''orange'#List
l2 = [1234]
l3 = [5678]
t1 = ('apple''watermelon''persimmon'#Tuple
#dictionary
d1 = { 'name':'홍길동''gender':'남성''number''12345''phone':'010-123-4567'}
#set
s1 = {1'apple'2'banana'3'orange'False#여러 자료형 포함 가능
 
#함수 정의
def test_func1():
    print("test_func1: Hello World")
 
#1개의 파라미터를 갖는 함수 정의
def test_func2(msg):
    print("test_func2:", msg)
    
#2개의 파라미터를 갖는 함수    
def test_func3(id, password):
    print("test_func3: 아이디 = ", id, "패스워드 = ", password)    
 
# 여러개의 파라미터(Tuple)를 갖는 함수
def test_func4(*params):
    print("test_func4:", params[0])
    print("test_func4:", params[1])
    print("test_func4:", params[2])
    print("test_func4:", params)
    print("test_func4: params 자료형 = ", type(params))
      
# Key = value 형태의 키워드 파라미터
# 파라미터 순서 신경 쓰지 않아도 됨
def test_func5(param3, param1, param2,):
    print("test_func5: param2 = " + param2)
 
# 가변 키워드 파라미터(Dictionary)를 갖는 함수
def test_func6(**params):
    print("test_func6: ", params["f2"])
    print("test_func6: params 자료형 = ", type(params))
    
#디폴트 파라미터 값 설정 함수
def test_func7(p1 = "apple"):    
    print("test_func7: ", p1)
 
#다양한 자료형(list, tupe, dic, set 등) 사용 함수
def test_func8(param):
    print("test_func8:", param)
    print("test_func8: params 자료형 = ", type(param))
    
#결과값을 리턴(반환)하는 함수    
def test_func9(param1, param2):
    sum = param1 + param2
    return sum
 
#결과값을 리턴(반환)하는 함수
def test_func10(param1):
    paramLen = len(param1)
    return paramLen
 
#함수 호출
test_func1()
test_func2("안녕하세요")
test_func3("maincodes""abcd123")
print("")
test_func4("apple""watermelon""persimmon")
print("")
test_func5(param1 = "apple", param2 = "watermelon", param3 = "persimmon")
print("")
test_func6(f1 = "apple", f2 = "watermelon")      
print("")
test_func7()
test_func7("watermelon")
print("")
test_func8(i1)
test_func8(l1)
test_func8(t1)
test_func8(d1)
test_func8(s1)
 
print("")
returnValue = test_func9(100200)
print("test_func9: returnValue = ", returnValue)
 
print("test_func10: d1의 길이 = ", test_func10(d1))
print("test_func10: s1의 길이 = ", test_func10(s1))
 
#람다함수 정의(한줄로 간결하게 함수 정의)
sum = lambda a, b : a+b  #람다 함수 정의
print("lambda 함수 : sum = ", sum(100200))
print("lambda 함수 : mul = "
      (lambda a, b : a * b)(10,20)) #람다 함수 정의
print("lambda 함수 : list_sum = "
      list(map(lambda a, b:a+b, l2, l3))) #람다 함수 정의
cs

 

test_func1() 함수는 파라미터와 리턴값이 없고 간단히 화면에 출력만 하는 함수입니다. test_func2() 함수는 msg라는 1개의 파라미터를 입력 값으로 사용하며 입력한 msg를 화면에 출력하는 함수입니다. test_func3()도 test_func2()와 유사하며 id, password라는 이름의 2개 파라미터를 입력받는 함수이며 test_func4()는 파라미터 개수를 알 수 없는 가변적 파라미터를 입력받으며 입력된 파라미터의 자료형은 Tuple입니다.

 

test_func5()는 key = value 형태의 키워드 파라미터를 입력값으로 갖는 함수로 이 경우 파라미터의 순서는 신경 쓰지 않아도 됩니다. test_func6()은 가변 키워드 파라미터를 입력값으로 갖는 함수로 입력된 파라미터의 자료형은 Dictionary입니다. test_func7()은 함수를 호출할 때 파라미터 값을 입력하지 않아도 디폴트로 입력값이 전달되도록 하는 함수입니다. test_func8()은 함수가 파라미터를 전달받을 때 여러 자료형의 형태로 입력받을 수 있음을 보여주는 함수이며 test_func9()와 test_func10()은 함수가 실행된 후 결과값을 리턴하는 것을 예시로 보여주는 함수입니다.

 

마지막으로 파이썬은 람다(lambda) 함수를 지원하는데 예제에서도 알 수 있듯이 함수 정의를 def가 아닌 lambda 키워드를 사용하여 한줄로 간결하게 함수를 정의할 수 있습니다.

 

🔗 실행결과(Output):

 

 

이상 JollyTree였습니다 (•̀ᴗ•́)و