콘텐츠로 건너뛰기
Home » 함수

함수

Python 101 – 함수

프로그래밍에서 함수는 핵심적인 개념이지만, 언어나 상황마다 용어가 다르기도 하고 정의도 모호해서 “함수는 이것이다!”라고 딱 잘라 말하기는 사실 힘듭니다. 위키 백과의 정의만 찾아봐도요.

함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미한다.

함수는 대부분의 프로그래밍 언어에서 지원하는 기능으로, 하나의 큰 프로그램을 여러 부분으로 나누어주기 때문에 같은 함수를 여러 상황에서 여러 차례 호출할 수 있으며 일부분을 수정하기 쉽다는 장점을 가진다.

https://ko.wikipedia.org/wiki/함수_(컴퓨터_과학)

가장 넓은 의미에서 함수를 정의하자면 “1개 이상의 동작을 묶어놓은 것”이라고 할 수 있습니다. 즉 일련의 동작을 하나의 단위로 묶어두고, 원하는 만큼 여러 차례 호출하여 사용하는 것이죠. 그렇게해서 전체 코드의 양을 줄일 수 있고, 또 공통된 동작에서 어떤 변경이나 수정이 필요할 때, 소스 코드의 이곳 저곳이 아닌 한 부분만 수정하면 되기 때문에 유지 보수 관점에서도 노력을 아낄 수 있죠.

이미 우리는 파이썬에서 함수를 사용하는 법을 알고 있습니다. 어떤 문자열이나 객체의 내용을 출력하는 print() 나 사용자로부터 문자열을 입력받는 input() 과 같은 동작은 파이썬이 미리 제공하는 함수입니다. 이렇게 별다른 사전 준비 없이 바로 사용할 수 있는, 파이썬이 기본적으로 제공하는 함수를 내장함수(builtin function)라고 합니다. 우리는 내장 함수를 사용하는 것외에 우리가 원하는 동작을 함수로 만들어서 사용할 수도 있습니다. 이런 개념을 내장함수에 상대적인 개념으로 사용자 정의 함수 (user defined function)이라고 합니다.

더 보기 »Python 101 – 함수

vim script 함수 총정리

vim에서 자주 사용하는 간단한 매크로는 키 맵으로 정의해서 사용할 수 있다. 하지만 여러 명령을 결합하거나, 데이터를 조작하거나 상황에 따라서 분기해야하는 등의 좀 더 복잡한 동작을 구현하기 위해서는 함수가 필요하다. vim script에서도 함수를 지원하고 있어서 이를 활용할 수 있는데, 오늘은 함수를 정의하고 사용하는 여러 방법에 대해서 정리해보도록 하겠다. 가능하면 이 포스트 하나로 vim 스크립트에서 함수를 정의하고 사용하는 것과 관련된 내용은 모두 다뤘으면 한다. (그리고 이후에 vim script 관련 포스팅을 하더라도 참고용으로 긴 설명 글이 필요하기도 하고…)

더 보기 »vim script 함수 총정리

(Vim) 사용자 정의 함수를 작성하는 법

Vim에서 간단한 조작으로 좀 더 복잡한 기능을 만드는 기능으로는 키맵이나 사용자 정의 명령을 정의하는 방법들이 있다. 다만 이러한 기능들은 기본적으로 항상 똑같은 입력을 단축하여 수행하게 하는 수준에서 사용된다. 특정한 환경이나 조건에서 작동하도록 기능을 커스터마이징하고 싶거나, 보다 복잡하고 정교한 기능을 사용하고 싶다면 사용자가 직접 함수를 정의하여 사용할 수 있다.

사용자 정의 함수는 다음과 같이 사용할 수 있다.

  • 특정 키맵을 사용하여 사용자 정의 함수를 호출한다.
  • 사용자 정의 함수를 호출하는 사용자 정의 명령을 만들어 사용한다.
  • 삽입모드 키맵을 만들어서 입력 중에 특정 키를 눌러 사용자 함수를 호출한다.

사용자 함수를 정의하는 전통적인 명령은 :fu[nction] 으로, 명령을 선언한 후 :endfu[nction] 명령을 만날 때까지 입력된 모든 명령이 순서대로 함수의 body로 기록되는 방식이다.이 명령은 새로운 함수를 정의하는 동작 외에도 기존에 생성된 사용자 정의 함수를 모두 리스트업하는 기능을 수행한다. 예를 들어 이름이 “~Files”로 끝나는 사용자 함수들을 확인하려면 :function /Files$ 라고 실행하면 함수의 검색 결과를 볼 수 있다.

더 보기 »(Vim) 사용자 정의 함수를 작성하는 법

LiveScript 살펴보기 – 03 함수

LS에서 함수는 일반 문법 편에서 잠깐 언급했듯이 화살표를 써서 간단히 정의할 수 있다. 이 함수 표현에서 중요한 점 두 가지는 첫 째 우변은 하나 이상의 표현식이라는 점과 표현식이 순서대로 나열되는 경우 맨 마지막 표현식의 결과가 자동으로 리턴된다는 것이다. 함수 LS는 함수형 프로그래밍 언어의 스타일을 많이 도입했다고 하였다. 비록 LS가 진짜 순수한 함수형 언어는 아니지만, 함수형 언어의 스타일을 도입한다는 것은 LS내의 함수라는 것은 가급적 아래와 같은 특징을 갖도록 디자인되어야 한다는 것이다. 순수성 : 함수의 결과값이 순수하게 파라미터에만 의존할 것. 따라서 입력된… 더 보기 »LiveScript 살펴보기 – 03 함수

SCSS/SASS 문법 정리

SCSS는 기존 CSS 문법에 SASS문법을 섞은 것이며, SASS 컴파일러로 그대로 컴파일 될 수 있다. 이 글에서는  SCSS 문법을 기준으로 SASS의 각 기능을 사용하는 방법에 대해 설명하도록 하겠다. 기본문법 – 셀렉터 지정 및 속성 작성 SCSS의 기본문법은 기본적으로 CSS 기본 문법을 그대로 적용하고, 여기에 SASS 식의 치환가능한 요소들을 추가할 수 있다. 기본룰은 다음과 같다. 기본틀은 CSS 문법과 동일하다. 셀렉터를 쓰고 { .. } 블럭안에 속성:속성값; 의 형태로 속성들을 정의할 수 있다. nested block을 적용할 수 있다.  //을 이용해서 라인단위로 주석처리를 할… 더 보기 »SCSS/SASS 문법 정리

[C] 함수로 전달된 포인터

포인터를 함수의 인자로 받는 경우, 함수내에서 원본을 변경하는가. 내용이 너무 두서 없어서 포스트 전체를 수정합니다. 처음 의문이 든 부분은, 문자열을 가리키는 포인터를 함수로 넘겨주고 문자열을 변형하면 포인터의 값이 변하는가?라는것이었는데. 이는 사실 그리 어려운 문제가 아니다. 포인터는 메모리의 주소를 가리키는 타입의 변수이고 이는 사실 unsigned int 나 unsinged int64 등의 정수형과 비슷하게 숫자를(메모리 번지도 결국 숫자값이므로) 담는 변수이다. 그리고 함수에 선언된 인자는 함수 내부에서만 사용하는 지역변수이고, 표준 타입의 변수를 함수에 전달하면 그 값이 인자로 선언한 변수에 들어가는데, 이건 그냥 변수의 값이… 더 보기 »[C] 함수로 전달된 포인터

[C] 함수 내에서의 메모리 할당과 해제

함수에서의 메모리 할당과 해제

C에서의 메모리 할당/해제의 개념은 설명은 간단한데 실제 적용시에는 무척이나 어렵다. 물론 뉴비시절에 책 보고 따라 코드를 써볼 때에는 이게 그다지 와 닿지 않는다. 곰곰히 생각해보니 그런 책의 예제들은 그냥 숫자값만 다루다보니 그런 것 같다.
위 글에서 이어서 함수 하나를 만들어보자. 이 함수는 문자열 상수를 받아서 이를 대문자로 변경한 문자열을 만들어준다. 문자열 상수는 변경할 수 없으니, 새로운 문자열을 생성해야 한다. 기본적인 아이디어는 다음과 같이 구현된다.더 보기 »[C] 함수 내에서의 메모리 할당과 해제

[Python101] 005 함수,모듈, 그리고 도움이 되는 도구들

지난 시간까지 기본적인 프로그래밍에 필요한 “입출력”을 다루는 부분을 간단하게 나마 살펴보았다. 실제로 지금까지의 내용은 뭔가 설명이 필요하거나 개념적인 이해를 도모하는 부분과는 조금 거리가 있었고, 마치 조리법처럼 “이렇게 하면 이렇게 이렇게 됩니다.” 정도였기에 경우에 따라서는 조금 재미도 떨어지고 지겨운 부분이 없지 않아 있었을 것으로 생각된다. 이번 시간부터는 프로그램을 구성하는 단위와 이를 어떻게 만드는지, 그리고 프로그램의 흐름은 어떤 식으로 만들어지는지를 살펴보고자 한다. 모듈 모듈(Module)이라는 것은 다른 것으로 대체 가능한 어떤 구성 요소를 뜻하는데, 파이썬에서는 미리 만들어두었다가 필요할 때 꺼내 쓰는 레고 조각같은… 더 보기 »[Python101] 005 함수,모듈, 그리고 도움이 되는 도구들