본문 바로가기
Python/개념익히기

함수

by ADELA_J 2023. 4. 3.

1. 함수

  ▶ 함수를 호출(할때 괄호 내부에 여러가지 자료를 넣음 : 이것이 매개변수) > 나오는 결과 : 리턴값

  ▶ 함수를 선언(정의) >>>> 함수 호출(불러오기)

  a. def 함수 이름 (매개변수):     def_함수를 정리한다는 의미, 고정    함수이름_함수를 만드는, 함수의 변수

      문장 

def print_3_times():	#함수의 선언(정의)↓
    print("안녕")
    print("안녕")
    print("안녕")	#함수의 선언(정의)↑
    
print_3_tiems()			#함수 호출

  b. 매개변수 Parameter, 인수 argument

     - Parameter : the variable listed inside the parentheses in the function definition.

        ▶인풋으로 제공되는 데이터 중 하나, 함수를 정의할때 소괄호 안에 들어가는 변수. 

        ▶입력으로 전달된 값을 받는 변수로 사용함. ex. def test(value)

     - Argument : the value that is sent to the function when it is called.

        ▶인풋으로 제공되는 여러 데이터들, 매개변수로 전달해주는 데이터

        ▶함수를 호출할때 전달하는 입력값

        ※ TypeError : 함수를 호출할때 매개변수, 인수를 넣지 않거나 덜넣거나 더 많이 넣으면 에러뜸

 

2. 매개변수

  2-a. 가변 매개변수 / Arbitrary Arguments / *args

        ▶인수를 모두 받을 수 있는 함수, 

        ▶가변 매개변수 뒤에는 일반 매개변수가 올 수 없음.

        ▶가변 매개변수는 하나만 사용할 수 있음. 

  2-b. 기본 매개변수 / Default Parameter Value

        ▶매개변수 = 값

        ▶매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값

            ▷입력했다면 다시 설정해준 값으로 덮어져버림.

        ▶뒤에는 일반 매개변수가 올 수 없음. 

def print_n_times(*v,n=2):		# '*v'가 가변매개변수
    #n번 반복합니다.
    for i in range(n):
        #values는 리스트처럼 활용합니다.
        for value in v:
            print(value)
        #단순한 줄바꿈
        print()

#함수 호출합니다.
print_n_times("안녕하세요","즐거운","파이썬프로그래밍",n=3) #'n=3'가 기본 매개변수

      2-a&b. when (기본 매개변수, 가변 매개변수)

def print_n_times(n=2, *values):
    #n번 반복합니다.
    for i in range(n):
        #values는 리스트처럼 활용합니다.
        for value in values:
            print(value)
        #단순한 줄바꿈
        print()

#함수를 호출합니다
print_n_times("안녕하세요", "즐거운", "파이썬")

        ▶기본 매개변수의 의미가 사라짐.  = 오류남: 왜냐면 range는 숫자만 받는데 인수가 "안녕하세요"니까

            ▷ 하지만 인수를 숫자로 하거나 n이 들어가는 range를 str을 받을 수 잇는 걸로 바꾼다면 실행은 되겠지

    2-b&a. when (가변매개변수,  기본 매개변수)

def print_n_times(*values, n=2):
    #n번 반복합니다.
    for i in range(n):
        #values는 리스트처럼 활용합니다.
        for value in values:
            print(value)
        #단순한 줄바꿈
        print()

#함수를 호출합니다
print_n_times("안녕하세요", "즐거운", "파이썬")

▶ *values가 가변 매개변수이기 때문에 인수값을 다 받아서 3가지 모두 받음. 

▶range(n) 이기 때문에 n=2이므로 2번 돌리게됨.

 

 

 

 

 

  2-c. 그래서 두개다 돌리고 싶다면? 키워드 인수/ keyword Arguments

    ▶매개변수 이름을 지정해서 입력하는 인수(key랑 value 둘다 보낼수 있음 key=value)

def print_n_times(*values, n=2):
    #n번 반복합니다.
    for i in range(n):
        #values는 리스트처럼 활용합니다.
        for value in values:
            print(value)
        #단순한 줄바꿈
        print()

#함수를 호출합니다
print_n_times("안녕하세요", "즐거운", "파이썬", n=3)

▶ 맨 마지막 줄 n=3 이 바로 이것 / n을 새로 값을 정해줌

예시 2번 keyword arguments

3. 리턴, return value : 함수를 실행한 후 나온 결과

  3-a. 함수 내부에서는 return 키워드를 사용할 수 있음.

    ▶ 함수를 실행했던 위치로 돌아가거나 함수가 끝나는 위치로 가거나 : 만나면 함수가 종료됨.

#함수 정의
def return_test():
    print("A위치입니다.")
    return              #리턴함다
    print("B위치입니다.")

#함수 호출
return_test()

'B위치입니다'는 앞에 return 때문에 실행안함. A위치까지만 실행하고 종료.

 

  3-b. 자료와 함께 리턴 : 자료를 가지고 돌아감

#함수 정의
def return_test():
    return 100
#호출
value = return_test()
print(value)

▶ 함수호출 2줄이 print(return_test()) 랑 같지만 권장은 안함

: 왜냐하면 이렇게 하면 함수가 위로 올라가서 3번 일하게 되어 시간이 오래걸림. 하지만 변수로 잡으면 1번만 함수 일함

 

  3-c. 아무것도 리턴하지 않았을때 : None 출력, 파이썬에서는 "없다"임. 

 

4. 기본적인 함수 활용

def 함수(매개변수):
	변수 = 초깃값
    #여러 가지 처리
    #여러 가지 처리 ( 여러번 ㄱㄴ)
   	return 변수

 ▶ 주로 이러한 형태로 작성됨. 

 

#함수 선언
def sum_all (start,end):
    #변수 선언
    output= 0
    #반복문을 돌려 숫자를 더합니다. 
    for i in range(start, end +1):
        output += i
    #리턴함다
    return output
#함수 호출
print("0 to 100:", sum_all(0,100))
print("50 to 100:", sum_all(50, 100))

#기본매개변수, 키워드 매개변수 활용해봄
def sum_all (start=0, end=100, step=1):
    output = 0
    for i in range(start, end+1, step):
        output += i
    return output

print("A.", sum_all())

▶ 맨 마지막 줄  sum_all() 빈칸으로 적어도 매개변수가 다 채워져있기때문에 ㄱㅊㄱㅊ

 

▶ 예시 하나더

def mul(*values):
    output = 1
    for i in values:
        output *= i
        print(output)
    return output
print(mul(5,7,9,10))

▶ 중간에 print(output)이 있어서 하나하나 곱해질때마다 진행사항이 보임.

▶ 초기값 설정할때 덧셈식은 0, 곱셈식은 1

'Python > 개념익히기' 카테고리의 다른 글

람다  (0) 2023.04.04
튜플  (0) 2023.04.04
문자열, 리스트, 딕셔너리와 관련된 기본 함수  (0) 2023.04.02
while 반복문  (0) 2023.04.01
범위(range)  (0) 2023.03.29