Back
Featured image of post 데이터형과 데이터 구조 (1)

데이터형과 데이터 구조 (1)

연산자, 함수

1. 연산

1.1 기본 연산자

코딩을 조금이라도 공부해 본 사람은 알겠지만, 파이썬에서는 여타 수많은 프로그래밍 언어와 마찬가지로 다양한 연산자를 지원하고 있다.

수학에서의 기호 파이썬에서의 기호
덧셈 + +
뺄셈 - -
곱셈 × *
나눗셈 ÷ /
  • 주의할 점은, 자료형(정수형, 실수형, …)에 따라 계산 방식이 조금씩 다를 수 있다는 것이다.

또, Python IDLE Shell에서는 파이썬 코드를 입력하면 실행 결과가 바로 출력되는 것을 볼 수 있다.

Python IDLE Shell :: 사칙연산
Python IDLE Shell :: 사칙연산

그리고 맨 아래 계산 (4 * 2) / 6을 보면 알 수 있겠지만, 일반적인 수학적 표현에서와 마찬가지로 괄호( )를 이용해 계산의 우선순위를 지정할 수 있다.

사칙연산 이외에도 여러 가지 연산자를 사용할 수 있다.

연산자 종류 기호
나눗셈의 나머지 구하기 %
나눗셈의 몫 구하기 //
지수(거듭제곱) 구하기 **

Python IDLE Shell :: 몫/나머지, 지수 계산
Python IDLE Shell :: 몫/나머지, 지수 계산

  • 일반적인 나눗셈이 아닌 정수 나눗셈의 경우 몫과 나머지를 각각 %, // 연산자를 사용하여 계산한다.
  • 파이썬에서는 거듭제곱을 계산할 때 ** 연산자를 사용하여 (밑) ** (지수) 형태로 나타낸다.

몫과 나머지를 한 번에 구하는 divmod() 함수도 있다.

>>> divmod(26, 4)
(6, 2)

2. 변수

프로그래밍에서 변수는 값을 저장하고, 저장된 값을 변경할 수 있다는 특징이 있다.

파이썬의 변수 사용법도 다른 언어와 크게 다르지 않다.

>>> a = 4
>>> b = 2
>>> a + b
6
>>> a * b
8
>>> a / b
2.0

다른 언어들과 마찬가지로 변수명을 정할 때는 몇 가지 규칙이 있다.

  • 알파벳 대소문자, 숫자, 언더바(_)만 사용할 수 있다.

  • 숫자는 맨 앞에 올 수 없다.

  • 예약어(reserved word)는 변수명이 될 수 없다.

    ex. if for return . . .

위 예시를 보면 알 수 있듯, 예약어는 특정 프로그래밍 언어 문법에서 이미 용도가 지정된 단어를 말한다.

그리고 이쯤에서 한 마디 덧붙이자면, 책을 그대로 옮기는 듯한, 그러니까 일종의 아카이빙을 하는 느낌이 들기 시작했다.

그래서 지금부터는 새롭게 배우게 된 내용을 정리하고, 이미 알고 있는 내용은 간단하게 요약하고 넘어가는 식으로 공부하기로 했다. 다른 프로그래밍 언어를 배우는 과정에서 이미 학습한 내용을 굳이 또 정리할 필요는 없기도 하고, 무엇보다도 현재 방식대로 진행하면 진도가 너무 느리다. 어쨌든 이제부터는 빠르게 진행해보기로 결정!

3. 함수

지금까지 여러 연산자들을 살펴보았다.

지금 살펴보는 함수는 이런 연산자들과 또 다른 함수들을 결합하여 특정 기능을 수행하도록 만든 것이다.

다른 언어들과 마찬가지로, 파이썬의 함수도 함수명 뒤에 괄호 ( )를 붙여 실행한다.

  • 함수명(인수1, 인수2, … )
    • 인수 : 함수에 전달되는 값
    • 반환값 : 함수로부터 돌아오는 값

예를 들어 각각 인수 2개를 입력받아, 인수 2개를 더한 결과를 반환하는 sum이라는 함수와, 인수 2개 중 더 큰 값을 반환하는 max라는 함수가 있다고 하자. 그러면 다음과 같은 결과를 볼 수 있다.

>>> sum(3, 5)
8
>>> max(4, 2)
4

max는 파이썬에 내장되어 있는 함수이고, sum+ 연산자의 기능을 함수로 만든 것인데, 이런식으로 함수를 직접 만드는 방법은 아마 나중에 함수 파트에서 자세히 배우지 않을까 싶다.

그리고 파이썬은 객체지향 언어이다. 즉, 객체에 딸린 함수들이 존재하고, **메소드(Method)**라고 부른다.

일반적인 함수와 메소드의 차이는 다음과 같다.

  • 함수 : 함수의 이름만 써서 원할 때 호출할 수 있다.
  • 메소드 : 객체와 메소드 명을 모두 써야 하고, 객체가 존재해야만 호출할 수 있다.

이 부분도 마찬가지로 자세한 내용은 추후 객체 파트가 나온다면 학습하지 않을까 싶다.

(다음 글에서 계속됩니다.)

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus