함수 Fuction

Jane의 study note.·2022년 10월 1일
0

파이썬 Python

목록 보기
20/31
post-thumbnail

자주 사용하는 파이썬 함수

isinstance()

함수 핵심 용어

arg, kwargs, 기본 매개변수(기본 파라미터, default parameter), 키워드 매개변수 by 윤, return


링크:함수

1. 함수란?


내장함수, 사용자함수

  • 내장 함수
print('Hello python')

str = input()
print(f'str : {str}')

numbers = [1, 2, 3, 4, 5]
numbers.sort()
print(f'numbers : {numbers}')

numbers.reverse()
print(f'numbers : {numbers}')

numbers.clear()
print(f'numbers : {numbers}')
  • 사용자 함수
def printUserName(name):
    print(f'{name}고객님, 안녕하세요.')

printUserName('홍길동')

def addCal(n1, n2):
    result = n1 + n2
    print(f'n1 + n2 = {result}')

addCal(1, 2)

3. 함수 사용 이유

덧셈 연산 5회 실행

n1 = int(input('n1 입력: '))
n2 = int(input('n2 입력: '))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력: '))
n2 = int(input('n2 입력: '))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력: '))
n2 = int(input('n2 입력: '))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력: '))
n2 = int(input('n2 입력: '))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력: '))
n2 = int(input('n2 입력: '))
print(f'n1 + n2 = {n1 + n2}')

-> 함수로 구현

def addCal():
    n1 = int(input('n1 입력: '))
    n2 = int(input('n2 입력: '))
    print(f'n1 + n2 = {n1 + n2}')

addCal()
addCal()
addCal()
addCal()
addCal()

2. 함수 선언과 호출

1. 함수 선언

동의어: 함수 정의

Return

  • 기본적으로 함수의 종료를 명시
    • return 옆에 값이나 수식이 있다면 해당 값을 호출자(caller)에게 반환(전달)
    • return 만 존재하면 None 반환
    • return이 없는 경우, 기본적으로 함수 코드 블록이 종료되면 종료로 간주. 이때도 None 반환
def weird_multiply(x, y):
    return      

weird_multiply(1, 5)         # 아무것도 나오지 않음
a = weird_multiply(1, 5)
print(a)                    # None
def weird_multiply(x, y):
    if x > 10:
        return x * y

    return (x + y) * 2        
    print(x + y)

weird_multiply(1, 5) # 12
					 # x값이 10을 안넘어서 if문 pass
                     # if문 바깥 return문인 (1+5)*2 = 12 출력
                     # print(x + y)는 실행안됨, 쓸모없는 코드 => return문에서 함수가 종료 되었기 때문
def weird_multiply(x, y):
    if x > 10:
        return x * y

    print(x + y)
    return (x + y) * 2        

weird_multiply(12, 5)   # 60
						# if문의 return에서 함수가 종료됨
def weird_multiply(x, y):
    if x > 10:
        return x * y

c = weird_multiply(12, 5)
print(c) #60

c = weird_multiply(2, 5)
print(c) # None : 아무것도 실행되지 않고 끝난 경우

2. 함수 호출

동의어: 함수 사용

def addCal():
    n1 = int(input('n1 입력 : '))
    n2 = int(input('n2 입력 : '))
    print(f'n1 + n2 = {n1 + n2}')


addCal()

실습

def calFun():
    n1 = int(input('n1 입력 : '))
    n2 = int(input('n2 입력 : '))

    print(f'n1 * n2 = {n1 * n2}')
    print(f'n1 / n2 = {round(n1 / n2, 2)}')

calFun()
def printWeatherInfo():
    print('오늘 날씨는 맑습니다. 기온은 25도입니다.')

printWeatherInfo()
printWeatherInfo()
printWeatherInfo()

3. 함수 내에서 또 다른 함수 호출

또 다른 함수를 호출하자!

def fun1():
    print('fun1 호출!')
    fun2()

def fun2():
    print('fun2 호출!')
    fun3()

def fun3():
    print('fun3 호출!')

fun1()
fun2()
fun3()

pass 사용

def printTodayWeather():
    pass

def printTomorrowWeather():
    pass

printTodayWeather()
printTomorrowWeather()

실습

def guguDan2():
    for i in range(1, 10):
        print('2 * {} = {}'.format(i, 2*i))

    guguDan3()

def guguDan3():
    for i in range(1, 10):
        print('3 * {} = {}'.format(i, 3*i))

    guguDan4()

def guguDan4():
    for i in range(1, 10):
        print('4 * {} = {}'.format(i, 4*i))

    guguDan5()

def guguDan5():
    for i in range(1, 10):
        print('5 * {} = {}'.format(i, 5*i))

guguDan2()

4. 인수와 매개변수

함수 호출 시 데이터를 넘겨주자!

매개변수(parameter, 파라미터, 변수)
인수(arguments, 인자)

 함수 호출 시 함수에 데이터를 전달할 수 있다.

def greet():
    print('안녕하세요.')

greet()

def greet(customer):
    print(f'{customer} 고객님 안녕하세요.')

greet('홍길동')
def calculator(n1, n2):
    print(f'{n1} + {n2} = {n1+n2}')
    print(f'{n1} - {n2} = {n1-n2}')
    print(f'{n1} * {n2} = {n1*n2}')
    print(f'{n1} / {n2} = {n1/n2}')

calculator(20, 10)

인수와 매개변수 개수

 인수와 매개변수 개수는 일치해야 한다

def addFun(n1, n2):
    print(f'{n1} + {n2} = {n1+n2}')

addFun(10, 20)

 매개변수 개수가 정해지지 않은 경우 ‘*’를 이용한다.

def printNumber(*numbers):
    for number in numbers:
        print(number, end='')
    print()

printNumber()
printNumber(1)
printNumber(1, 2)
printNumber(1, 2, 3)
printNumber(1, 2, 3, 4)
printNumber(1, 2, 3, 4, 5)

실습

 국어, 영어, 수학 점수를 입력받고, 입력받은 점수를 이용해서 총점과 평균을 출력하는 함수를 만들어 보자.

def printScore(kor, eng, mat):
    sum = kor + eng + mat
    avg = sum / 3

    print(f'총점: {sum}')
    print(f'평균: {round(avg, 2)}')

korScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))

printScore(korScore, engScore, matScore)
def printScore(*scores):
    sum = 0
    for score in scores:
        sum += score
    avg = sum / len(scores)

    print(f'총점: {sum}')
    print(f'평균: {round(avg, 2)}')

korScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))
sciScore = int(input('과학 점수 입력: '))
hisScore = int(input('국사 점수 입력: '))

printScore(korScore, engScore, matScore, sciScore, hisScore)

5. 데이터 반환

함수 실행결과를 돌려주자!

함수 실행 결과 반환

def divideNumber(n):

    if n % 2 == 0:
        result = '짝수'
    else:
        result = '홀수'

    return result

    # if n % 2 == 0:
    #     return '짝수'
    # else:
    #     return '홀수'

returnValue = divideNumber(5)
print(f'returnValue: {returnValue}')

실습

2문



def cmToMm(cm):
    result = cm * 10

    return result

length = float(input('길이(cm)입력: '))
returnValue = cmToMm(length)
print(f'returnValue: {returnValue}mm')


import random

def getOddRandomNumber():

    while True:
        rNum = random.randint(1, 100)
        if rNum % 2 != 0:
            break

    return rNum

print(f'returnValue: {getOddRandomNumber()}')

6. 지역변수와 매개변수

함수 내에서만 사용할 수 있는 변수가 있다.

전역변수(global variable)

 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.

num_out = 10
def printNumbers():
    print(f'num_out: {num_out}')

printNumbers()
print(f'num_out: {num_out}')

#2
num_out = 10
def printNumbers():
    num_out = 20
    print(f'num_out: {num_out}')

printNumbers()
print(f'num_out: {num_out}')

지역변수 (local variable)

 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.


def printNumbers():
    num_in = 20
    print(f'num_in: {num_in}')

printNumbers()

#2

def printNumbers():
    num_in = 20
    print(f'num_in: {num_in}')

print(f'num_in: {num_in}')

global 키워드

 global을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.

num_out = 10
def printNumbers():
    global num_out
    num_out = 20
    print(f'num_out: {num_out}')

printNumbers()
print(f'num_out: {num_out}')

실습

2문

def printArea():
    triangleArea = width * height / 2
    squareArea = width * height

    print(f'삼각형 넓이: {triangleArea}')
    print(f'사각형 넓이: {squareArea}')

width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))
printArea()

totalVisit = 0

def countTotalVisit():
    global totalVisit

    totalVisit = totalVisit + 1
    print(f'누적 방문객: {totalVisit}')

countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()

7. 중첩함수

함수 안에 또 다른 함수!

 함수안에 또 다른 함수가 있는 형태이다.

def out_funtion():
    print('out_function called!!')

    def in_function():
        print('in_function called!!')

    in_function()


out_funtion()

 내부 함수를 함수 밖에서 호출할 수 없다.

def out_funtion():
    print('out_function called!!')

    def in_function():
        print('in_function called!!')

    in_function()

in_function()

실습


def calculator(n1, n2, operator):

    def addCal():
        print(f'덧셈 연산: {round(n1 + n2, 2)}')

    def subCal():
        print(f'뺄셈 연산: {round(n1 - n2, 2)}')

    def mulCal():
        print(f'곱셈 연산: {round(n1 * n2, 2)}')

    def divCal():
        print(f'나눗셈 연산: {round(n1 / n2, 2)}')

    if operator == 1:
        addCal()
    elif operator == 2:
        subCal()
    elif operator == 3:
        mulCal()
    elif operator == 4:
        divCal()

while True:
     num1 = float(input('실수(n1) 입력: '))
     num2 = float(input('실수(n2) 입력: '))
     operatorNum = int(input('1.덧셈,  2.뺄셈,  3.곱셈,  4.나눗셈,  5.종료 '))

     if operatorNum == 5:
         print('Bye')
         break

     calculator(num1, num2, operatorNum)

8. lambda 함수

함수 선언을 보다 간단하게 하자!

def calculator(n1, n2):
    return n1 + n2

returnValue = calculator(10, 20)
print(f'returnValue: {returnValue}')



calculator = lambda n1, n2: n1 + n2
returnValue = calculator(10, 20)
print(f'returnValue: {returnValue}')

실습

getTriangleArea = lambda n1, n2: n1 * n2 / 2
getSquareArea = lambda n1, n2: n1 * n2
getSircleArea = lambda r: radius * radius * 3.14

width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))
radius = int(input('반지름 길이 입력: '))

triangleValue = getTriangleArea(width, height)
squareValue = getSquareArea(width, height)
radiusValue = getSircleArea(radius)

print(f'삼각형 넓이: {triangleValue}')
print(f'사각형 넓이: {squareValue}')
print(f'원 넓이: {radiusValue}')

기타_by 나

# 함수를 선언합니다.
def power(item):
    return item * item
def under_3(item):
    return item < 3

# 변수를 선언합니다.
list_input_a = [1, 2, 3, 4, 5]

# map() 함수를 사용합니다.
output_a = map(power, list_input_a)
print("# map() 함수의 실행 결과")
print("map(power, list_input_a):", output_a)
print("map(power, list_input_a):", list(output_a))
print()

# filter() 함수를 사용합니다.
output_b = filter(under_3, list_input_a)
print("# filter() 함수의 실행 결과")
print("filter(under_3, list_input_a):", output_b)
print("filter(under_3, list_input_a):", list(output_b))

0개의 댓글