자료의 출처는 엘리스 AI 트랙(https://aitrack.elice.io/courses/) 사전 학습 '디버깅 입문'이며, 학습 후 정리한 내용입니다.
⚡️올바르지 않은 내용이 있을 경우 댓글로 남겨주시면 감사하겠습니다.⚡️
수강 목표
- 체계적인 프로그램을 설계해 볼 수 있다.
- 우리 주변의 프로그램을 보는 시각이 달라진다.
- 파이썬과 조금 더 친해진다.
코드의 기본, 함수
함수의 기초
함수란?
자주 사용하는 코드를 의미 단위로 묶어 둔 것
함수의 예시
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 입력
this_year = 2018
return this_year - year_of_birth + 1
# 매개변수 - return 유형
# 1부터 6사이의 숫자를 랜덤하게 리턴
def roll_dice(): # 입력은 없음
return random.randint(1, 6)
# 매개변수 X - return 유형
# seconds부터 0까지 1초마다 출력
def count_down(seconds): # 입력 = 매개변수
while seconds >= 0:
print(seconds)
time.sleep(1) # 1초동안 코드를 쉬게 만들어줌
seconds -= 1
# return 이 없이 print 존재
# 매개변수 - print 유형
# 1시간마다 현재 시간을 출력
def clock_hourly():
while True:
print(datatime.now())
time.sleep(3600)
# 매개변수 X - return X, print 유형
함수의 구조
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 입력
this_year = 2018
return this_year - year_of_birth + 1
age = calculate_age(1988) # 31
매개변수: 함수를 정의하는 시점에 받기로 한 값
인자: 내가 이 함수를 실제로 사용하는 시점에 실제로 넣어주는 값
return 값: return 뒤에 있는 값
return, 함수의 끝
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 입력
this_year = 2018
age = this_year - year_of_birth + 1
return age
print(age) # <- 실행되지 않음
return 뒤에 어떤 코드가 오더라도 실행되지 않음.
return과 print 모두 실행하고 싶은 경우
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 입력
this_year = 2018
age = this_year - year_of_birth + 1
print(age)
return age
return vs. print
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 매개변수
this_year = 2018
return this_year - year_of_birth + 1
age = calculate_age(1988) # 인자
return은 함수의 결과 값이 '이것'이다를 알려주는 용도.
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 매개변수
this_year = 2018
return this_year - year_of_birth + 1
print(calculate_age(1988))
print를 사용해야 원하는 값을 시각적으로 볼 수 있음.
# 태어난 연도를 받아 나이를 리턴
def calculate_age(year_of_birth): # 매개변수
this_year = 2018
print(this_year - year_of_birth + 1) # return문이 없음 -> 결과물이 없음
age = calculate_age(1988) # age에는 값이 저장되지 않음 / print(age) = None
파이썬 함수 100% 활용하기
매개변수가 많을 때
def sign_up(email, password, name, city, gender, is_vip):
...
# Seoul에 사는 Alice님
sign_up("alice@elice.io", "c0derL@nd", "Alice", "Seoul", "F", Fasle)
# Alice에 사는 Seoul님
sign_up("alice@elice.io", "c0derL@nd", "Seoul", "Alice", "F", Fasle)
sign_up(email="alice@elice.io",
password="c0derL@nd",
city="Seoul", name="Alice",
gender="F", is_vip=False)
파이썬에서는 매개 변수 이름을 직접 명시하면서 코드를 짤 수 있다.
순서가 달라져도 코드는 똑같이 성립한다.
매개변수 이름을 직접 넣어주면서 실수가 적은 코딩을 할 수 있다.
함수 디자인
어떤 커뮤니티의 90% 이상은 가입 시 일반 회원이다.
그러나 소수의 회원들은 가입 시부터 VIP로 등록된다.
def sign_up(email, password, name, city, gender, is_vip):
...
alice = sign_up(..., is_vip=False)
bob = sign_up(..., is_vip=False)
james = sign_up(..., is_vip=False)
mansour = sign_up(..., is_vip=True)
보통은 일반회원이 아니다로 정의, vip인 경우에만 VIP임을 말해주면 된다.
매개변수의 기본값
def sign_up(email, password, name, city, gender, is_vip=False): #is_vip=False 기본값
...
alice = sign_up(..., is_vip=False)
bob = sign_up(..., is_vip=False)
james = sign_up(..., is_vip=False)
mansour = sign_up(..., is_vip=True)
def sign_up(email, password, name, city, gender, is_vip=False):
...
alice = sign_up(...)
bob = sign_up(...)
james = sign_up(...)
mansour = sign_up(..., is_vip=True)
위 두 코드는 완벽히 동일하다.
Boolean 같은 경우, 기본값을 설정할 수 있다.
ex) lever = "bronze"
파이썬의 내장 함수들
max(1, 3) // 3 #maximum
min(1, 3) // 1 #minimun
abs(-17) // 17 #abolute value
round(18.8) // 19 #반올림
len("Elice") // 5 #length
len([1, 3, 5]) //3
str(37) // "37" #string
int("9") // 9 #Integer
int("3.14") // Error
range(3) // [0, 1, 2])
range(1, 4) // [1, 2, 3])
reversed("Elice") // "ecilE"
any([False, True, True]) // True #any: 하나라도 True가 있다면 True
all([False, True, True]) // False #all: 모두가 다 True일 경우 True
변수의 스코프
변수의 스코프(범위)
this_year = 2018
def calculate_age(year_of_birth):
return this_year - year_of_birth + 1
함수 밖에서 어떤 변수를 선언했다면, 그 안에 정의된 함수는 바깥의값을 가져올 수 있다.
def calculate_age(year_of_birth):
this_year = 2018
return this_year - year_of_birth + 1
print(f"올해는 {this_year}년입니다.")
# this_year를 찾을 수 없습니다.
해당 코드는 작동하지 않는다. -> this_year 변수의 scope가 다르기 때문!
this_year = 2018
def calculate_age(year_of_birth):
this_year = 2000
return this_year - year_of_birth + 1
calculate_age(1988) # 13
함수 안에서 변수를 찾을 때 가장 가까운 곳에서부터 찾는다.
this_year는 함수 안에서 부터 찾고, 없을 경우 함수 밖에서 찾는다.
함수 이름을 다르게 하여 둘 다 접근할 수 있게 하는 방법이 있다.
'IT > Python' 카테고리의 다른 글
객체지향 프로그래밍-03. 클래스의 상속과 다형성 (0) | 2021.06.20 |
---|---|
파이썬 객체지향 프로그래밍-02. 클래스 입문 (0) | 2021.06.20 |
도레미 파이썬: 객체 (0) | 2021.06.16 |
도레미 파이썬: 모듈과 패키지 (0) | 2021.06.16 |
엘리스 AI 트랙 도레미 파이썬 06. 함수와 메서드 (0) | 2021.05.06 |
댓글