본문 바로가기
학부 자료/Python

[Python] 파이썬 기초 9/20, 사용자 함수

by jackMK 2023. 11. 7.

<내용정리>

 

- 관련 파일

9일차_221205.py
0.00MB



- 본문

### 사용자 함수
## 함수 용어 정리
입력값: 인수, 인자, 매개변수, 파라미터
출력값: 결과값, 반환값, 돌려주는 값(return)

## 매개변수(입력값), 반환값(출력값)이 없는 간단한 함수
<형식>
def 함수이름():  # 함수 정의
    수행할 코드
함수이름()  # 함수 호출

def hello():
    print('Hello, world')
hello()

## 매개변수(입력값)만 있는 함수
<형식>
def 함수이름(매개변수1, 매개변수2):
    수행할 코드
함수이름(인수1, 인수2)

def add(a, b):
    print(a + b)
add(1, 2)

x = 6
y = 3
add(x, y)

n1 = int(input('첫번째 수를 입력하세요: '))
n2 = int(input('두번째 수를 입력하세요: '))
add(n1, n2)

## 매개변수(입력값), 반환값(출력값)이 1개인 함수
<형식>
def 함수이름(매개변수1, 매개변수2):
    수행할 코드
    return 반환값(출력값)

결과함수 = 함수이름(인수1, 인수2)

def add(a, b):
    return a + b
print(add(1, 2)) # 함수 호출 후 print()문으로 결과를 본다

n1 = add(10, 20)
print(n1)

## 매개변수(입력값), 반환값(출력값)이 2개 이상인 함수
<형식>
def 함수이름(매개변수1, 매개변수2):
    수행할 코드(있으면)
    return 반환값1, 반환값2
결과변수1, 결과변수2 = 함수이름(인수1, 인수2)

def add_sub(a, b):
    return a + b, a - b
x, y = add_sub(1, 2)
print(x, y, sep=', ')

print(add_sub(10, 20))

## 디폴트 매개변수(매개변수에 초깃값 부여) - 기본 매개변수
def info(name, age, address='비공개'):
    print('이름:', name)
    print('나이:', age)
    print('주소:', address)
info('네오', 25)
print()
info('프로도', 25, '제주도')

## 키워드 인수 : 각각의 매개변수가 어떤 용도인지 알기 어려울 때 사용
def info(name, age, address):
    print('이름: ', name)
    print('나이:', age)
    print('주소:', address)
    print()
info('라이언', 20, '대구') # 일반적인 호출 방식
info(name='어피치', age=30, address='부산') # 키워드 인수(순서상관 X)

## 가변 매개변수 : 매개변수(입력값)의 개수를 정확히 모를 때
<형식>
def 함수이름(*args):
    수행할 코드
함수이름(필요한 인수만큼 입력)

def adder(*args):
    print(f'{args}의 합은 {sum(args)}입니다')
adder(1, 2)

def add_mul(choice, *args):  # 가변 매개변수를 맨 뒤로
    if choice == 'add':
        answer = 0  # 합계를 구할 변수
        for i in args: # args의 개수만큼 반복
            answer += i
    elif choice == 'mul':
        answer = 1
        for i in args:
            answer *= i
    return answer  # 결과로 나온 answer을 반환한다

a = add_mul('add', 1, 2, 3)
print(a)

b = add_mul('mul', 1, 2, 3, 4)
print(b)

Ex)

def cfmc(money, pick):
    print(f'{money}원의 {pick}을 선택하셨습니다')
    menu = {
        '아메리카노': 1000,
        '카페라떼': 1500,
        '카푸치노': 2000
    }
    if pick not in menu:
        print(f'{pick}은 판매하지 않습니다')
        return money, '없는 메뉴'
    elif menu[pick] > money:
        print(f'{pick}은 {menu[pick]}원입니다')
        return money, '금액 부족'
    else:
        return money-menu[pick], pick

order = input('커피를 선택하세요(아메리카노, 카페라떼, 카푸치노) >> ')  # 맨 위로 가도 실행 가능
pay = int(input('얼마를 내시겠습니까 >> '))

change, coffee = cfmc(pay, order)

print(f'거스름돈 {change}원, 커피 : {coffee}')

## 지역 변수 / 전역 변수
지역 변수: 한정된 지역(함수)
전역 변수: 프로그램 전체, 예약어-global 사용

# ex)
a = 200  # 전역변수

def func1():
    a = 10  # 지역 변수
    print('func1 함수에서의 a의 값:', a)

def func2():
    print('func2 함수에서의 a의 값:', a)

func1()
func2()

# ex) 전역 변수의 값을 변경해야 하는 경우
a = 0

def f():
    global a  # 전역 변수 a를 가리킨다
    a = 10  # 전역 변수 a의 값을 10으로 변경

print('함수호출 전 a:', a)
f()  # 함수 호출
print('함수호출 후 a:', a)

 


loading