파이썬 중급 - 함수

이상해씨·2021년 10월 8일
0

자료구조, 알고리즘

목록 보기
14/20

◾함수

  • 함수(function) : 수학의 함수와 동일, 입력을 통해 특정 연산을 진행하여 결과를 출력하는 기능을 가진 것
    • 함수 사용 이유 : 특정 기능을 재사용하기 위해서 사용
    • def 함수명(매개변수): 연산
    • 함수 내에서 또 다른 함수 호출
    • pass : 실행문 생략 가능
# 함수 예시
def addFunc(x, y):
    return x + y

print(addFunc(3, 4))
  • 함수의 종류 : 내장 함수, 사용자 함수
    • 내장 함수 : 파이썬에서 기본으로 제공하는 함수
      • print(), input(), sort(), reverse(), clear() 등
    • 사용자 함수 : 사용자가 def 키워드를 이용해 직접 선언하는 함수
      • 위의 addFunc()와 같이 직접 선언
# 내장 함수
print('Hello')

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

printUserName('honggildong')
  • 함수 선언 : def 키워드, 함수명(매개변수), :, 들여쓰기(코드블럭)
  • 함수 호출 : 함수명(매개변수)
# 함수 선언부
# def 함수명(매개변수):
def addCal():
    # 들여쓰기 연산(기능)
    n1 = int(input('n1 입력 : '))
    n2 = int(input('n2 입력 : '))
    print('n1 + n2 = {}'.format(n1 + n2))

# 함수 호출부
addCal()
  • 인수와 매개변수 : 함수 호출 시 함수에 데이터 전달가능
    • 매개변수 : 함수 호출시 전달받을 데이터를 담을 변수
    • 인수 : 함수 호출시 전달할 데이터
    • 매개변수와 인수의 개수는 일치해야한다.
# 인수, 매개변수
# 매개변수
def printName(name):
    print('Hello {}'.format(name))

# 인수
printName('Python')

def calculator(n1, n2):
    print('{} + {} = {}'.format(n1, n2, n1+n2))
    print('{} - {} = {}'.format(n1, n2, n1-n2))
    print('{} * {} = {}'.format(n1, n2, n1*n2))
    print('{} / {} = {}'.format(n1, n2, n1/n2))

calculator(10, 20)
  • *매개변수명 : 매개변수가 정해지지 않은 경우, 튜플 형태로 인수를 변수에 저장
# *매개변수
def printNumber(*numbers):
    for number in numbers:
        print(number, end = ' ')
    print()
    print(type(numbers))

printNumber()
print('-'*20)
printNumber(1)
print('-'*20)
printNumber(1,2)
print('-'*20)
printNumber(1,2,3)
print('-'*20)
printNumber(1,2,3,4)
  • **매개변수명
    • **키워드로 값을 전달받는다.
    • 인수의 숫자에 관계없이 사용할 수 있다.
    • 일반적으로 kwargs로 지정
# **매개변수
def printValues(**kwargs):
	print(kwargs.get('num1', 1)
    print(kwargs.get('num2', 2)
    print(kwargs.get('num3', 3)
    
printValues(num1=100)
print('-'*20)
printValues(num1=100, num2=200)
print('-'*20)
printValues(num1=100, num2 = 200, num3 = 300)
  • return 키워드 : 함수 실행 결과 호출부로 반환
    • return을 만나면 함수 실행 종료
# 홀수 짝수
def divideNumber(n):
    if n % 2 == 0:
        return "짝수"
    else :
        return '홀수'
    # return이 무조건 발생하므로 아래 실행문은 무시된다.
    print('hello')

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

◾지역변수와 전역 변수

  • 전역 변수 : 함수 밖에서 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수 없다.
    • global 키워드 : 함수 안에서도 전역 변수의 값을 수정할 수 있다.
# 전역 변수
num_out = 10 # 전역 변수
def printNumber():
    # global num_out : num_out 변수가 전역 변수임을 선언 => 수정 가능
    # num_out이라는 지역 변수를 새로 선언하는 것
    num_out = 222222222
    print(f'num_oud : {num_out}')

printNumber()
# num_out이 변경되지 않은 것을 확인할 수 있다.
print(f'num_out : {num_out}')
  • 지역 변수 : 함수 내에서 선언된 변수로 함수 안에서만 사용 가능
# 지역 변수
def printNumber():
    # 지역 변수 선언
    num_in = 20
    print(f'num_in : {num_in}')

printNumber()

◾중첩 함수

  • 중첩 함수 : 함수 안에 또 다른 함수를 선언한 형태
    • 내부 함수를 함수 밖에서 호출할 수 없다.
# 중첩 함수
def out_function():
    print('out_function called!!')

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

◾lambda 함수

  • lambda 키워드 : 함수 선언을 간단하게 할 수 있다.
# def
def calculator(n1, n2):
    return n1 + n2
returnValue = calculator(10, 20)
print(f'returnValue : {returnValue}')

# lambda
calculator2 = lambda n1, n2 : n1 + n2
returnValue = calculator2(10, 20)
print(f'returnValue : {returnValue}')
profile
후라이드 치킨

0개의 댓글