Python - 함수

이호현·2020년 7월 2일
0

Python

목록 보기
5/10

1. 함수 정의

함수 정의

def open_account():
    print('새로운 계좌가 생성되었습니다')

# 매개변수를 받을 때
def deposit(balance, money):
    return balance + money

2. 함수 호출

함수에 값 전달, 반환

def deposit(balance, money):
    print('입금이 완료되었습니다')
    print('잔액은 {0}원입니다'.format(balance + money))
    return balance + money

def withdraw(balance, money):
    if balance >= money:
        print('출금이 완료되었습니다')
        print('잔액은 {0}원입니다'.format(balance - money))
        return balance - money
    else:
        print('잔액이 모자랍니다')
        print('잔액은 {0}원입니다'.format(balance))
        return balance

balance = 0

balance = deposit(balance, 100)
# > 입금이 완료되었습니다
# > 잔액은 100원입니다

balance = withdraw(balance, 500)
# > 잔액이 모자랍니다
# > 잔액은 100원입니다

balance = withdraw(balance, 50)
# > 출금이 완료되었습니다
# > 잔액은 50원입니다

# 반환값 여러개도 가능
def withdraw_night(balance, money):
    commission = 10
    return commission, balance - money - commission

(commission, balance) = withdraw_night(balance, 20)
print('수수료 {0}원이고, 잔액은 {1}원 입니다'.format(commission, balance))

# > 수수료 10원이고, 잔액은 20원 입니다

기본값

매개변수를 받지 않을 때, default값을 설정 할 수 있음

def human(name, age = 10):
    print('이름: {0}, 나이: {1}'.format(name, age))

human('햄토리')

# > 이름: 햄토리, 나이: 10

키워드값

함수 호출할 때, 키워드를 정해서 순서가 바뀌어도 원하는 매개변수에 적용가능

def human(name, age, hobby):
    print('이름: {0}, 나이: {1}, 취미: {2}'.format(name, age, hobby))

human(hobby = '게임', name = '햄토리', age = 10)

# > 이름: 햄토리, 나이: 10, 취미: 게임

가변 인자

함수 호출할 때, 키워드를 정해서 순서가 바뀌어도 원하는 매개변수에 적용가능

def human(name, age, hobby1, hobby2, hobby3):
    print('이름: {0}, 나이: {1}'.format(name, age), end=' ')	# end는 끝에 어떤걸 추가로
    print(hobby1, hobby2, hobby3)				# 출력할지 정할 수 있음
								# 지금은 ' '로 공백 추가함

human('햄토리', 10, '게임', '코딩', '운동')
human('햄동이', 10, '영화', '먹기', '')

# > 이름: 햄토리, 나이: 10 게임 코딩 운동
# > 이름: 햄동이, 나이: 10 영화 먹기


#위 함수를 아래와 같이 바꿀 수 있음
def human(name, age, *hobbys):
    print('이름: {0}, 나이: {1}'.format(name, age), end=' ')
    for hobby in hobbys:
        print(hobby, end=' ')
    print()							# 그냥 출력하면 한줄로 나와서
								# print()를 이용해 줄바꿈

human('햄토리', 10, '게임', '코딩', '운동')
human('햄동이', 10, '영화', '먹기', '')

# >이름: 햄토리, 나이: 10 게임 코딩 운동
# >이름: 햄동이, 나이: 10 영화 먹기

지역 변수, 전역 변수

함수 호출할 때, 키워드를 정해서 순서가 바뀌어도 원하는 매개변수에 적용가능

students = 50
def attend(studentsA):
    students = students - studentsA			# **오류** 함수 내에서 students가
    print('출석한 학생 수: {0}'.format(studentsA))	# 선언되지 않았음
print('총 학생 수: {0}'.format(students))
attend(20)
print('안 온 학생 수: {0}'.format(students))

함수내에서 global 키워드를 이용해 전역 변수를 함수내에서 사용가능

students = 50
def attend(studentsA):
    global students
    students = students - studentsA
    print('출석한 학생 수: {0}'.format(studentsA))
print('총 학생 수: {0}'.format(students))
attend(20)
print('안 온 학생 수: {0}'.format(students))

# > 총 학생 수: 50
# > 출석한 학생 수: 20
# > 안 온 학생 수: 30

전역 변수를 자주 사용하면 안좋으니 아래처럼도 표현 가능

students = 50
def attend(students, studentsA):
    students = students - studentsA
    print('출석한 학생 수: {0}'.format(studentsA))
    return students
print('총 학생 수: {0}'.format(students))
students = attend(students, 20)
print('안 온 학생 수: {0}'.format(students))

# > 총 학생 수: 50
# > 출석한 학생 수: 20
# > 안 온 학생 수: 30
profile
평생 개발자로 살고싶습니다

0개의 댓글