def open_account(): print('새로운 계좌가 생성되었습니다') # 매개변수를 받을 때 def deposit(balance, money): return balance + money
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