안녕하세요
27년차 진로탐색꾼 조녁입니다!!
오늘은 파이썬에서 함수를 어떻게 사용하는 지 공부해봤습니다.
파이썬 설치 방법은 아래 글 참고해주세요! (주피터 노트북 환경 + 구글 클라우드 사용이 가능한 Colab 환경 추천드립니다.)
파이썬에 대한 기초적인 내용이지만 기억하면 좋을 것들이니 가볍게 한 번 봐주세요~ !
모든 코드는 아래 git_hub 에 올려둔 Colab 노트북 참고 부탁드려요. (앞부분 내용도 포함되어있습니다.)
gist.github.com/jonhyuk0922/55957cd35d9a82e064e613ac95fcc951#file-_-ipynb
*궁금하신 내용은 댓글에 질문 남겨주세요!
파이썬 기초 4강 내용
1. 함수란?
2. 전달값과 반환값
3. 기본값 , 키워드값
4. 가변인자
5. 지역변수와 전역변수
6 성별 적정체중 예측
1. 함수란?
-> 함수란 , 입력값이 있고 출력값이 있는 통로다.
def open_account():
print("새로운 계좌가 생성되었습니다.")
open_account()
>> 새로운 계좌가 생성되었습니다.
2. 전달값과 반환값
1) 전달값 : balance(잔고) , money(입금) -> 반환값 : balance + money 인 함수 예시
eg1) 은행 입금 안내해주는 함수
def deposit(balance, money):
print(f"입금이 완료되었습니다. 잔액은 {balance+money}원입니다.")
return balance + money
balance = 0 #잔액
balance = deposit(balance,1000)
print(balance)
eg2) 은행 출금 안내해주는 함수 ( *잔고 부족 시 출금 불가 안내 기능)
def withdraw(balance,money):
if balance > money:
print(f"출금이 완료되었습니다. 잔액은{balance-money}원입니다.")
return balance - money
else:
print(f"출금이 완료되지 않았습니다. 잔액은 {balance}원입니다.")
return balance
balance = 0 #잔액
balance = deposit(balance,2000)
#balance = withdraw(balance,3000)
balance = withdraw(balance,500)
eg3) 심야시간 수수료 붙을 떄
def withdraw_night(balance,money): #저녁에 출금
commission = 100 #수수료 100원
return commission, balance- commission - money
commission, balance = withdraw_night(balance,500)
print(f"수수료 {commission}원이며, 잔액은 {balance}원입니다.")
3. 기본값 , 키워드값
1) 특정 전달값이 모든 경우 동일할때, 함수 전달값에 기본값을 지정하여 사용
eg1) 프로필을 나타내는 함수 생성
def profile(name, age, main_lang):
print(f"이름 : {name}\t나이 : {age}\t주 사용 언어 : {main_lang}")
profile("유재석",20,"파이썬")
profile("김태호",25,"자바")
eg2) 함수의 전달값 중 'age' , 'main_lang' 에 기본값 사용
#같은 학교, 같은 학년, 같은 반, 같은 수업일 때.
def profile(name, age=20, main_lang="파이썬"):
print(f"이름 : {name}\t나이 : {age}\t주 사용 언어 : {main_lang}")
profile("유재석")
profile("김태호")
2) 키워드에 값을 넣어 함수를 호출하면, 순서가 뒤죽박죽이더라도 파라미터 순서대로 출력해준다.
def profile(name, age, main_lang):
print(name, age, main_lang)
profile(name="유재석",main_lang="파이썬",age=20)
profile(main_lang="자바",age=25,name="김태호")
>> 유재석 20 파이썬
>> 김태호 25 자바
4. 가변인자
1) 가변인자를 사용하면, 파라미터 갯수와 입력값의 갯수를 맞춰주지 않아도 된다.
eg1) 가변인자 미사용 , 입력값의 갯수와 함수의 파라미터 갯수가 같아지도록 일일이 맞춰줘야 한다.
def profile(name, age, lang1,lang2,lang3,lang4,lang5):
print(f"이름 :{name}\t나이 : {age}\t", end=" ")
print(lang1,lang2,lang3,lang4,lang5)
profile("유재석",20,"Python","Java","C","C++","C#")
profile("김태호",25,"Kotlin","SWift"," "," "," ")
eg1) 가변인자 사용 , 파라미터 앞에 " * "를 붙여준다.
def profile(name, age, *language):
print(f"이름 :{name}\t나이 : {age}\t", end=" ")
for lang in language:
print(lang,end=" ")
print()
profile("유재석",20,"Python","Java","C","C++","C#","Go")
profile("김태호",25,"Kotlin","SWift")
5. 지역변수와 전역변수
1) 지역변수 : 함수가 호출될 때 생성되서 함수가 끝날 때 사라지는 변수 vs 전역변수 : 어디서든 부를 수 있는 변수
eg) 전체 총의 갯수가 주어지고, 경계근무를 나간 후 남은 총의 갯수 파악하는 함수
-전역변수로 사용 *global 사용
gun = 10
def checkpoint(soldiers): #경계 근무
#gun = 20
global gun #전역 공간에 있는 gun 사용
gun = gun - soldiers
print(f"[함수 내] 남은 총 : {gun}")
print(f"전체 총 : {gun}")
checkpoint(2) #2명이 경계 근무 나감
print(f"남은 총 : {gun}")
-지역변수로 사용, 함수 파라미터로 gun을 받음 , 그리고 함수 마지막에 return 해준다.
gun = 10
def checkpoint_return(gun, soldiers):
gun = gun - soldiers
print(f"[함수 내] 남은 총 : {gun}")
return gun
print(f"전체 총 : {gun}")
gun = checkpoint_return(gun,2)
print(f"남은 총 : {gun}")
위의 두 경우 결과는 같지만 , 전역변수가 많아지면 헷갈리니까 지역변수로 쓰는 걸 추천함.
6. Quiz : 성별 적정 체중 예측하기
스스로 풀어보신 후 아래로 가시길 추천드립니다 ㅎㅎ
*문제풀이
우선 경우를 나눠줘야한다if문을 써서 우리가 받아들이는 gender 가 "남자"인지, "여자"인지로 나눠준다.
그리고 각각 알맞은 수식을 리턴해준다.
체중(weight)은 소숫점 두가리까지만 보고 싶으므로 , 아래와 같이 round함수에 두번째 인자로 2를 넣어준다.
weight = round(std_weight(height/100,gender), 2)
정답코드
def std_weight(height,gender):
if gender == "남자":
return height * height * 22
else:
return height * height * 21
height = 186 #cm단위
gender = "남자"
weight = round(std_weight(height/100,gender), 2)
print(f"키 {height}cm {gender}의 표준 체중은 {weight}kg 입니다.")
적정체중은 적정체중일뿐!! 내 몸무게가 내게 가장 적합한 몸무게다!! (라고 생각해야 오늘 저녁도 맛나게 먹지~)
*본 포스팅은 유튜브 '나도코딩' 강의를 듣고 작성하였습니다.
특별히 긴 강의를 인프런이라는 사이트에서 파트별로 나눠서 제공해줘서 손쉽게 접할 수 있었습니다. 아래 링크 첨부하겠습니다.
참고자료
'프로그래밍 공부 > Python' 카테고리의 다른 글
[Python] 타입 힌팅(Type Hinting) 이란? (0) | 2021.04.21 |
---|---|
[파이썬 기초 5강] 입출력(표준입출력, 다양한 출력포맷, 파일입출력, pickle, with) + 업무자동화_ 보고서 50개 만들기 (0) | 2021.03.15 |
[파이썬 기초 3강] 제어문(if문, for문,while문, continue,break, 한줄for문 ) + cocoa 택시 매칭방법 (2) | 2021.02.18 |
[Pycharm] Tensorflow dev 응시하기 위한 설정 (0) | 2021.02.09 |
[파이썬 기초 2강] 자료구조(list, dictionary, tuple) + 쿠폰 당첨자 발표 (0) | 2021.02.08 |