본문 바로가기
SK 행복성장캠퍼스/Python 기초

0903_4일차_함수_사용자정의함수

by NickNuma 2020. 9. 6.

이번엔 함수에 대해 공부하려고 합니다.

함수 중에서도 사용자 정의 함수에 대해 알아보려합니다.

 


함수에는 시스템이 이미 제공하고 있는 빌트인함수사용자가 필요할 때 생성해서 사용할 수 있는 사용자 정의 함수가 있습니다.
def 함수명 (): 으로 사용자정의 함수를 만들 수 있는데
함수명 옆 파라미터 변수라는 ( 변수 )를 줄 수 있으며, 함수를 사용했을 때 반환값(리턴값)을 줄 수 있습니다.
파라미터 변수리턴값선택적인 것이기 때문에 사용자 정의 함수는 총 4가지 형태를 갖습니다.
1. 리턴 값과 파라미터를 갖는 함수2. 리턴 값을 갖지만 파라미터 변수를 갖지 않는 함수
3. 리턴 값은 없지만 파라미터 변수는 갖고 있는 함수, 4. 리턴 값도, 파라미터 변수도 갖지 않는 함수

함수를 사용하기 위해서는 함수를 정의 후, 반드시 함수를 호출해야합니다. ==> 함수명()
그리고, 반드시 파라미터 변수의 갯수인자값의 갯수같아야합니다. (인자값 = 함수 호출 시, 함수에 변수를 전달하는 값)
( 함수명항상 소문자로 써줍니다. )

"""
    함수(function)
    1) 용도 : 기능(동작)처리 담당
    2) 종류
        가. 빌트인 함수 (built -in)
            - 시스템이 제공한 함수

        나. 사용자 정의 함수
            용도 : 빌트인에서 제공하지 않는 기능이 필요할 때 사용자 정의 함수를 만들 수 있다.

            문법 (Syntax): 4가지 형식의 사용자 정의 함수 생성 가능    # [옵션]
                def 함수명 ():
                    문장
                    [return 값]                    #리턴값, 반환값

                def 함수명 ([변수, 변수2, ....]):    #파라미터 변수
                    문장
                    [return 값]

            ==> 함수명은 소문자로

            특징 :
                - 함수를 사용하기 위해서는 반드시 호출해야 한다.
                    호출 방법은 함수명(), 반드시 파라미터 변수 갯수와 인자값의 갯수가 같아야한다.
                - 호출되어 실행된 이후에는 반드시 호출한 곳으로 돌아간다.   ( 원 코드에서 함수 호출(call) -> 함수에서 함수 문장 실행 후 원 코드에 값 반환(return) )
                    함수 호출 (위치 A) -> 함수 실행 (위치 B) -> 함수 기능 실현 (위치 B) -> 함수 기능 종료 (위치 A) -> 위치 A이후의 코드 실행
"""

 


1. 사용자 정의 함수 中파라미터 변수 x , 리턴값 x

# 1. 사용자 정의 함수 中, 파라미터 변수 x , 리턴값 x
print("시작_1")
def fun1():
    print("hello")
fun1()              # 함수 호출     # hello
print("종료_1")      # 종료_1

 

2. 사용자 정의 함수 中, 파라미터 변수 O , 리턴값 x

# 2. 사용자 정의 함수 中, 파라미터 변수 O , 리턴값 x
# 함수를 호출할 때, 반드시 파라미터 변수 갯수와 일치한 값을 지정하여 call 해야한다. 데이터 형은 무관.
# 호출할 때 전달하는 값 = "인자값 (argument)" 라고 부른다.

print("시작_2")                               # 시작_2
def fun2(n, n2):                             # 파라미터 변수, parameter
    print(n, n2)
    
fun2(10, 20)                                 # 함수 호출     # 10 20
# 인자값, argument (인자값을 함수에 넘길때, 반드시 함수의 파라미터 수를 확인해야한다.)
fun2("홍길동", "장길산")      # 함수 호출        # 홍길동 장길산
fun2([10, 20, 30], ["안", "녕", "하~"])        #함수 호출      # [10, 20, 30] ["안", "녕", "하~"]

print("종료_2")                                #종료_2

## ==> 파라미터 변수의 갯수와 인자값의 갯수가 반드시 일치해야한다.
##     ("인자 리스트 (argument list)가 반드시 같아야 한다.")

 

3. 사용자 정의 함수 中, 파라미터 변수 O , 리턴값 x

# 3. 사용자 정의 함수 中, 파라미터 변수 O , 리턴값 x
print("start")                  # start
def fun3():
    print("fun3")
    return 100  # 리턴값의 데이터형은 무관
result = fun3()                 # 함수 호출  # fun3   # result = 100
print("리턴값(반환값):", result)  # 100
print("end")                    # end

 

4. 사용자 정의 함수 中, 파라미터 변수 O , 리턴값 O (******)

# 4. 사용자 정의 함수 中, 파라미터 변수 O , 리턴값 O (******)
print("start2")         # start2
def fun4(n, n2):
    print(n, n2)
    return n + n2
result = fun4(10, 20)   # 함수 호출     #10 20      #result = 30
print("end2")           # end2

 


작업을 해야하지만 당장에 필요없을 때.     조건문, 반복문 결과 상관 없이 작업을 해야할 때 ===> pass
if True:     for문 :       while문:       -> 조건문, 반복문: 다음에 문장이 없으면 ==> Error
   pass         pass         pass        -> 에러 방지용으로 pass를 써줌 => error 없이 run 가능

"""
    if True: (for문 :) (while문:)
        pass    # 콜론(:) 다음에 문장이 없으면 에러가 나기때문에 에러 방지용으로 pass를 씀.
                 (작업을 해야하지만 당장에 필요 없을때, 당장에 조건문, 반복문 상관없이 작업을 해야할 때)

"""

 


연습 문제
#문제1. 주민번호 암호화 함수를 작성하시오.
# > 981222-1067890 ==> 981234-1******


 


내가 한 방법 (약간 메모리 낭비)

ssn = "981222-1067890"
def fun1(m):
    a = ssn[0:8] + "******"         # 이럴 필요가 없었다. 굳이 변수 하나를 만들어서 메모리 낭비. return 값에 바로 넣어줄 수 있다.
    return a
    return a
print("암호화 전 주민번호", ssn)     # 암호화 전 주민번호 981222-1067890
result = fun1(ssn)                  # fun1함수 호출    # result = 인자값의 index 8번 전까지 슬라이싱 + ******
print("암호화 후 주민번호", result)  # 암호화 후 주민번호 981222-1******

 


강사님 솔루션

ssn = "981222-1067890"
def fun1(m):
    return m[0:8] + "******"
print("암호화 전 주민번호", ssn)      # 암호화 전 주민번호 981222-1067890
result = fun1(ssn)                 # fun1함수 호출    # result = 인자값의 index 8번 전까지 슬라이싱 + ******
print("암호화 후 주민번호", result)   # 암호화 후 주민번호 981222-1******

 


마지막 예제

#문제 2.  파일명만 반환하는 함수를 작성하시오.
#   예 > sample01.py ==> sample01

s = "sample01.py"
s = "sample01.txt"

def fun2(m):
    index = m.find('.')     # .을 찾아서 해당 문자 위치 반환
    return m[:index]        # 반환값 = 변수에서 .의 위치 전까지 슬라이싱한 값

print("확장자 제거 전 파일명 :", s)       # 확장자 제거 전 파일명 : sample01.txt
result = fun2(s)                       # fun2 함수 호출     # result = 인자값의 . 이전의 값까지 슬라이싱한 값
print("확장자 제거 후 파일명 :", result)  # 확장자 제거 후 파일명 : sample01

 

이렇게~~ 사용자 정의 함수를 마치고
다음엔 파라미터와 인자값에 대해서 조금 더 설명해보도록 하겠습니다.

 

그럼 이만~

반응형

'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글

0903_4일차_함수_일급객체  (0) 2020.09.06
0903_4일차_함수_파라미터  (0) 2020.09.06
0903_4일차_반복문_while문  (0) 2020.09.06
0903_4일차_List/Dict Comprehension  (0) 2020.09.06
0902_3일차_연습문제  (0) 2020.09.06

댓글