본문 바로가기
IT/Python

파이썬 객체지향 프로그래밍-01. 함수

by 무녈 2021. 6. 20.

자료의 출처는 엘리스 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는 함수 안에서 부터 찾고, 없을 경우 함수 밖에서 찾는다. 

함수 이름을 다르게 하여 둘 다 접근할 수 있게 하는 방법이 있다.

 

 

반응형

댓글