MRP -111 : 1-1. 파이썬 '함수 , 클래스'
함수 기초문법
: https://dojang.io/mod/page/view.php?id=2357
함수는 자주 사용하는 코드를 한 곳에 모아 놓은 것을 뜻합니다.
def 함수이름(매개변수1, 매개변수2): # 매개변수 지정
return 반환값1, 반환값2 # 값을 여러 개 반환
변수1, 변수2 = 함수(인수) # 반환값을 변수 여러 개에 저장
위치 인수
함수에 인수를 순서대로 넣는 방식을 위치 인수라고 합니다. 위치 인수를 사용하는 함수는 리스트(튜플) 앞에 *(애스터리스크)를 붙여서 리스트 언패킹으로 넣을 수 있습니다.
def 함수이름(*매개변수): # 위치 인수를 사용하는 가변 인수 함수
코드
함수(인수1, 인수2) # 인수 여러 개를 직접 넣기
함수(*리스트) # 리스트 언패킹
함수(*튜플) # 튜플 언패킹
키워드 인수
함수에 넣는 인수에 이름(키워드)를 붙이는 방식을 키워드 인수라고 합니다. 키워드 인수는 딕셔너리 앞에 **(애스터리스크 두 개)를 붙여서 딕셔너리 언패킹으로 넣을 수 있습니다.
def 함수이름(**매개변수): # 키워드 인수를 사용하는 가변 인수 함수
코드
함수(키워드1=값1, 키워드2=값2) # 키워드 인수를 직접 넣기
함수(**딕셔너리) # 딕셔너리 언패킹
personal_info(name='홍길동', age=30, address='서울시 용산구 이촌동')
매개변수의 초깃값
함수를 만들 때 매개변수에 초깃값을 지정하면 함수를 호출할 때 해당 인수를 비워두고 호출할 수 있습니다.
def 함수이름(매개변수=값): # 매개변수에 초깃값 지정
코드
함수() # 매개변수에 초깃값이 있으므로 인수를 비워두고 호출
함수의 재귀호출
함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라 합니다.
람다 함수: 익명 함수(anonymous function)
지금까지 def로 함수를 정의해서 사용했습니다. 이번에는 람다 표현식으로 익명 함수를 만드는 방법을 알아보겠습니다.
람다 표현식은 식 형태로 되어 있다고 해서 람다 표현식(lambda expression)이라고 부릅니다. 특히 람다 표현식은 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용합니다.
# lambda 함수 선언
f = lambda x : x+100
for i in range(3):
print(f(i))
# lambda 에서 입력값을 반드시 이용할 필요는 없음
def print_hello():
print("hello python")
def test_lambda(s, t):
print("input1 ==", s, ", input2 ==", t)
s = 100 # 생각해보기 => s, t 선언 및 값 할당이 없으면 error
t = 200
fx = lambda x, y : test_lambda(s, t) # fx(x,y) = test_lambda(s, t)
fy = lambda x, y : print_hello() # fy(x,y) = print_hello()
fx(500, 1000) # fx(500, 1000) = test_lambda(s, t)
fy(300, 600) # fy(300, 600) = print_hello()
클래스 기초 문법
:dojang.io/mod/page/view.php?id=2396
클래스 설계도 :
-> 추후 예제 설계도 인입
유의 사항: 참조에러, private , public, self 처리 , 동일명 이용시 차이점등
클래스 예제
class Person:
count = 0 # class variable
def __init__(self, name):
self.name = name
Person.count += 1 # class 변수 count 증가
print(self.name + " is initialized")
def work(self, company):
print(self.name + " is working in " + company)
def sleep(self):
print(self.name + " is sleeping")
@classmethod
def getCount(cls): # class method
return cls.count
# Person instance 2개 생성
obj1 = Person("PARK")
obj2 = Person("KIM")
# method call
obj1.work("ABCDEF")
obj2.sleep()
# 속성에 직접 접근. 기본적으로 파이썬에서는 모두 public
print("current person object is ", obj1.name, ", ", obj2.name)
# class method 호출
print("Person count ==", Person.getCount() )
# class variable direct access
print(Person.count)
with 예제
# with 구문을 사용한 방법
# with 블록을 벗어나는 순간 파일 객체 f가 자동으로 close 됨.
with open("./file_test", 'w') as f:
f.write("Hello, Python !!!")