(본 글은 수학의 즐거움 직문수 4강을 참고하여 작성한 것입니다.) 아래와 같은 함수 $f: A \to B$가 있다. 함수가 갖춰야 할 조건을 모두 갖췄으므로 분명히 함수가 맞다. $f: A \to B$의 역함수 $g: B \to A$는 아래 조건을 만족해야 한다. $$g \circ f = \mathrm{id}_A$$ $$f \circ g = \mathrm{id}_B$$ $\mathrm{id}_A$와 $\mathrm{id}_B$는 각각 $A$에서 $A$로 가는 항등함수, $B$에서 $B$로 가는 항등함수를 말한다. 합성 함수의 결과가 항등함수가 되어야 한다고 하니, 그냥 심플하게 뒤집어서 붙여보자. 아차, $g$가 함수가 아니다. $g$가 함수이려면 어떻게 해야 할까? 우선 2와 3이 모두 $b$를 가리..
본 글의 코드는 여기에서 보실 수 있습니다. Q. 0부터 99까지 정수의 제곱수로 구성된 리스트를 생성하시오. A. 방법은 여러 가지가 있다. 우선 range 객체와 함수를 하나 만들어놓고 시작한다. def sq(x): return x**2 r = range(100) 처음 배우는 방법은 아래와 같이 리스트에 append를 하는 방식이다. # 쌩 for문 사용 l = [] for i in r: l.append(i**2) 리스트 컴프리헨션을 사용하면 훨씬 간단해진다. # list comprehension l = [i**2 for i in r] 만들어둔 함수 sq를 쓸 수도 있다. # 직접 연산 대신 함수 사용 l = [sq(i) for i in r] map은 이터러블의 각 요소에 함수를 적용시킬 수 있다. ..
한줄요약: 함수명 뒤에 괄호를 쓰고 1초만 기다려보자. 자주 쓰는 함수가 아니면 사용법이 생각나지 않을 때가 있습니다. 사실 자주 쓰는 함수도 종종 헷갈립니다. 예를 들어... - interp1의 인자를 어떤 순서로 쓰더라? method가 먼저던가, extrapolation이 먼저던가? - polyfit에 인자가 몇 개 들어가지? - randi에 max 값이 먼저였나? 아니면 행렬 크기가 먼저였나? 이럴 때 쓰는 방법이 몇 가지 있습니다. 가장 확실한 방법은 명령 창에 아래처럼 쓰는 것입니다. >> doc randi 도움말 창이 뜨면서 randi 사용법 문서를 볼 수 있습니다. 이 정도까지는 필요없고 간단히 사용법만 보고 싶다면 명령 창에 아래처럼 쓰면 됩니다. >> help randi 이보다 더 빠른 ..
원문: Top 5 Mistakes You Make When Declaring Functions in Python (약간의 의역을 얹었습니다.) 어떤 프로그래밍 프로젝트에서든 함수는 핵심요소입니다. 잘 만들어진 함수는 코드의 가독성을 높이고 유지보수를 쉽게 만듭니다. 반대로 함수를 엉성하게 만들면 가독성이 떨어지고 유지보수 비용이 올라갑니다. 아무리 실력좋은 프로그래머라도 시간이 지나면 자신의 코드를 잊어버리기 마련이므로, 잘 작성된 함수는 프로젝트의 가치를 올려준다고 할 수 있습니다. 물론 파이썬도 예외가 아닙니다. 함수 작성 시 흔히 범하는 실수를 소개하겠습니다. 이 실수들을 이해하고 나면 가독성과 유지보수 면에서 향상된 코드를 짤 수 있을 것입니다. "가독성은 중요하다." - 파이썬 철학 (역자 주:..