TIL#08 생활코딩 Python 함수
23강 (문법)- 함수1/2
함수(function)
함수라는 것을 바라보는 첫번째 시각은 정리정돈의 도구로 바라보는 것이다.
물론 함수는 단순한 것이 아니기 떄문에 되게 다면적인 면을 갖고 있지만
그 여러개의 얼굴들은 사실은 하나이다.
자주쓰던 print()도 함수다.
#code.... 코드 1억개
a=1
b=2
c=3
s=a+b+c
r=s/3
print(r) #2.0
#code.... 코드 1억개
코드가 복잡해지면 그 수많은 코드들 사이에 끼어있는
위 코드가 평균을 구하기 위한 코드라는 것을 파악하는게 쉽지가 않다.
어디서부터 어디까지가 서로 연관된 코드 인지도 알기 힘들다
즉, 코드가 많아짐에 따라서 정리정돈의 필요성이 생긴다.
또 여기 있는 코드가 누구든지 저게 필요할 수 있는 보편적인 코드라면 굉장히 많은
중복이 발생하게 된다.
그럼 이때 함수를 도입해야한다.
def average(): #def를 쓰면 파이썬은 함수를 만든다고 생각한다.
a=1
b=2
c=3
s=a+b+c
r=s/3
print(r)
함수를 사용함으로서 가독성과 코드에 대한 이해를 쉽게할 수 있다.
그리고 코드를 획기적으로 줄일 수 있고 값을 변경하면 이 함수를 사용하는
모든 곳에서 동시에 개선 또는 변경이 반영된다는 폭발적인 효과를 얻을 수 있다.
또 어디서부터 어디까지가 같은 취지의 코드인지를 파악하기가 매우좋다.
이것들이 함수라고 하는 기능이 갖고있는 특성들이다.
24강 (문법)- 함수2/2
def average(a,b,c):
s=a+b+c
r=s/3
print(r)
average(10,20,30) #20.0
#input(입력) 함수의 입력
#parameter(매개변수) average(a,b,c)의 a,b,c를 매개변수라고 한다.
#argument(인자) average(10,20,30) 10,20,30을 인자라고 한다.
이 함수는 평균을 구하는 일을 하고 있고 출력하는 일을 하고 있다.
좋은 부품은 그 부품이 한가지의 일을 하는거다.
그 부품 안에는 불필요한 기능이 없기 때문에 최소한의 기능을 이용해서
따른 부품들을 결합해서 뭔가 만들 수 있는거다.
그래서 함수가 자기 이름에 걸맞는 본질적인 작업만 할 수 있게 하는것이다.
def average(a,b,c):
s=a+b+c
r=s/3
return r
print(average(10,20,30)) #20.0
def a():
return 'haha'
print(a()) #haha
a라는 함수는 이 함수의 정의 안에 들어있는 리턴 뒤에 나오는 값이 되는 것이다.
리턴값 뒤에 나오는 값이 그 함수에 대한 표현식이다.
이렇게 하면 이메일을 보낸다던가, 파일을 저장한다던가 함수를 다양한 용도로 사용할 수 있기 때문에
하나의 함수에는 하나의 기능만 갖고 있는 것이 훨씬 더 유리하다
25강 (활용)- 함수
함수를 활용해서 애플리케이션을 좀 개선해 보자.
애플리케이션이 있을 때 그 애플리케이션 동작은 그대로 두고
기능을 추가하는 것이 아니라 그 구현되는 방법을 훨씬 효율적으로 바꾸는 작업을
리팩토링이라고 한다.
create.py
def getList(): #저 함수를 호출하는 쪽에서 리스트에 대한 정보를 가져오는 코드겠거니 할수 있다.
files = os.listdir('data')
listStr = ''
for item in files:
listStr = listStr + '<li><a href="index.py?id={name}">{name}</a></li>'.format(name=item)
return listStr
.
.
.
.
'''.format(title=pageId, desc=description, listStr=getList()))
/////////////////////////////////////////////////////////////////////////////////////////
서로 같은 함수들이 여러 곳에서 중복해서 사용되고 있다면
우리는 어떻게 중복을 제거할 수 있을까?
바로 그러한 상황에서 해결책은 모듈이다.
다음 시간엔 모듈을 만들어 보자.