파이썬 기초 (1)

LEEEEE·2021년 12월 28일
1

파이썬의 기본적인 개념을 알아보자!

  • 변수(variable)
  • 함수(function)
  • 연산자(operator)
  • 제어문(control statements)
  • 자료형(data types)

함수와 변수

함수 호출하기

수학에서의 함수란 (아주 단순화하면) 입력값(input)에 대해 출력값(output)을 가지는 관계를 가리킨다. 반대로 프로그래밍에서의 함수는 의미가 달라진다. 함수는 불려진 시점에 특정한 작업을 수행하며, 입력값과 출력값은 있을 수도 없을 수도 있다.

프로그래밍 분야에서는 입력값을 주로 인자(argument) 라고 부른다. 함수에서 인자는 들어갈 수도 있고 안들어 갈 수도 있다.

예를 들면,

1 print()

라는 명령어를 입력하더라도 정상적으로 실행이 된다는 것이다. 반대로 print()함수에 인자값을 넣어 print(1 + 1)과 같이 작성하여도 정상적으로 출력이 되는 것을 알 수 있다.


변수 사용하기

변수의 사전적 정의는 변할 수 있는 수이다. 즉, 값을 명확하게 갖고 있다기보다는 다른 값을 가리키는 존재라고 할 수 있다.

파이썬에서는 a = 1과 같은 형태로 작성한다. 이때 a를 변수라고 하고 1을 변수가 가리키는 값이라고 한다.


새로운 함수 정의하기

기존에 만들어진 함수(Ex. print(), sum() 등)만 가져다 쓸 수도 있지만, 우리가 직접 함수를 만들 수도 있다.

호출하면 Hello World!를 출력하는 함수를 만들어보자!

1 def say_hello_world():
2	print('Hello World!')

해당 함수를 정의한 다음 호출해보면 Hello World!가 출력되는 것을 확인할 수 있다.


변수의 유효 범위

당연하게도 함수 내부에 변수 정의가 가능하다.
다만 함수 내부에서의 변수는 밖에서 사용이 불가하다.
함수 내부에 변수를 정의하고, 그 변수를 외부에서 출력하려고 하면 변수가 정의되어있지 않다고 오류가 뜬다.
이런 변수를 지역변수라고 한다.


함수에 인자 전달하기

앞서 나왔던 내용중에 함수에는 인자라고 하는 입력값을 넣을 수 있다고 하였다.
이런 인자를 입력받아 출력해보는 함수를 만들어보자!

1 def hello(name):
2	print(name + ', Hi~!')

hello()라는 함수를 정의하고 내부 인자로 name을 받을 수 있게 작성하였다. 해당 함수에 '김이박'이라는 인자를 넣어 실행해보면, hello('김이박')이 될 것 이고, 김이박, Hi~!로 출력된다.

인자를 넣을 수 있게 함수를 만들면 해당 함수 호출 시 필요한 인자를 모두 넣어야한다. 넣지않으면 오류가 나는데 이때 이런 오류를 방지하고자 인자의 기본값(default)을 설정해줄 수 있다. 예시 코드는 아래와 같다.

1 def hello(name='안녕!'):
2	print(name + ', Hi~!')

위와 같이 작성하면 hello()함수에 인자를 넣지 않고 호출하더라도 오류가 발생하지 않는다.

이와 더불어 함수는 한 번에 여러 개의 인자를 받을 수 있다. 예시 코드는 아래와 같다.

1 def hello(name1, name2):
2	print(name + ', Hi~!')

이처럼 함수에 여러 인자를 넣으면 한 번에 여러 개의 인자를 전달할 수 있다.


함수 결과 반환하기

위에서 배운 내용으로는 함수를 호출했을 때 단순히 출력하는 방법을 익혔다. 그렇기때문에 해당 함수를 갖고는 무언가 할 수 있는 방법이 없다.
그렇다면 출력값을 가지고 무언가를 할 수 있게 하려면 어떻게 해야할까?
출력값을 명시적으로 반환(return)하게 표시하여야한다. 예시 코드는 아래와 같다.

1 def sum_num(num1, num2):
2	return num1 + num2

위와 같이 코드를 사용하게 되면 함수에서 나온 결과값을 반환할 수 있다.


제어문

제어문은 프로그램의 흐름을 제어하는 것이다.

if 문

if문은 어떤 명제가 참인지 거짓인지에 따라 코드의 실행 여부를 결정한다.
명제를 만들 때에는 비교연산자(conditional operator) 를 사용할 수 있다. >, <, >=, <=, ==, != 등이 있다. 예시 코드는 아래와 같다.

1 def print_positive_or_negative(number):
2	if number >= 0:
3		print('+')
4	else:
5		print('-')

기본적으로 if문은 if, else로 구성되고, 추가 조건을 걸때는 elif를 사용할 수 있다. 그리고 두 개이상의 명제를 하나의 조건문에 묶고 싶을 때는 논리연산(logital operator) 를 사용할 수 있다. and, or 가 있고, and는 명제가 모두 참일 때만 조건문을 실행하고, or는 명제가 하나라도 참인 경우에 작동한다. 예시 코드는 아래와 같다.

1 def print_negative_or_odd(number):
2	if (number < 0) or (number % 2 != 0):
3		print(number)

while 문

while문은 조건이 참인 동안에만 반복하는 제어문이다. 이러한 반복문을 루프라고 부르고, 끝없이 계속 실행되면 무한 루프라고 부른다. 예시 코드는 아래와 같다.

1 n = 1
2 while n <= 20:
3	print('Hello World!')
4	n += 1

위와 같이 작성하면 n이 20이 될때까지 while문을 돌게 된다. 즉, 해당 코드를 실행하게 되면 Hello World가 20번 출력되는 결과를 확인할 수 있다.


for 문

for문은 while문과 다르게 값이 여러 개인 목록에서 변수에 하나씩 담아 실행한다. 예시 코드는 아래와 같다.

1 for a in 'ABC':
2	print(a)

위와 같이 작성하면 a라는 변수에 문자열 ABCA, B, C로 나눠져 담기게 된다.


자료형

파이썬에는 숫자, 문자열 외에도 다양한 값이 존재한다. 이 값들에 대한 종류를 자료형(data type) 이라고 한다.

정수형

정수형 자료형은 int로 양의 정수와 음의 정수 모두 포함한다. 수학적으로 보면 정수는 무한하지만 컴퓨터에서의 정수는 유한하다. 이유는 컴퓨터의 메모리는 유한하기 때문이다. 일반적으로 많이 사용하는 64비트 컴퓨터의 경우 64 비트의 공간에 숫자를 저장할 수 있다. 예시 코드는 아래와 같다.

1 print(type(1))

위의 코드를 실행하면 해당 인자의 자료형을 출력해주고 int형인것을 확인할 수 있다.


실수형

정수를 제외한 실수를 의미하며, 부동소수점 수 라고도 하고, float라고도 표현한다. 여기서 소수는 1과 자신으로밖에 나눠지지 않는 수가 아니고, 소수점 아래에 값이 있는 수를 의미한다. 예시 코드는 아래와 같다.

1 print(type(1.0))

위의 코드를 실행하면 자료형이 float인것을 확인할 수 있다. 여기서 주의할 점은 1은 정수이지만, 1.0은 소수라는 점이다.


None Type

NoneType은 유한한 값을 가지고, 값을 None 단 하나만을 갖게 된다. 여기서 말하는 None0과 같이 값이 있는 것을 의미하는게 아니고, 정말 아무것도 없는것을 의미한다.


bool Type

boolTrue, False 두 가지값을 가지고 있다. not을 붙이면 참과 거짓을 뒤집을 수 있다.


문자열

문자열은 따옴표 또는 쌍따옴표로 감싸서 사용한다. 예제 코드는 아래와 같다.

1 print('Hello')

여러 줄을 쓰고 싶다면 따옴표, 쌍따옴표를 세 개씩 연달아 써서 열고 닫으면 된다.


시퀀스 객체

시퀀스 객체는 연속된 값이 묶여있는 객체를 의미한다.

튜플과 리스트

시퀀스 객체로 하나의 객체에 여러 개의 값이 들어갈 수 있다. 튜플은 값을 괄호()로 묶어서 구분한다. 예제 코드는 아래와 같다.

1 a = (1, 2, 3)

리스트는 값을 대괄호[]로 묶어서 구분한다. 예제 코드는 아래와 같다.

1 a = [1, 2, 3]

리스트와 튜플은 모두[색인]을 통해 원하는 값을 가져올 수 있다. 추가로 리스트는 값을 추가하거나 삭제가 가능한 가변이지만, 튜플은 값이 수정이 안된다. 리스트에서 값을 추가하기 위해서는 .append(), 값을 삭제할 때에는 .remove(), 특정 순서의 값을 뺄때는 .pop()을 사용한다. 예제 코드는 아래와 같다.

1 list_123 = [1, 2, 3]
2 list_123.append(4)
3 print(list_123)
4
5 list_123.remove(4)
6 print(list_123)
7
8 list_123.pop(0)
9 print(list_123)

딕셔너리

딕셔너리 또한 여러 개의 값을 넣을 수 있는 시퀀스 객체의 일종이다. 다만 리스트와 튜플과 달리 숫자로 된 인덱스를 쓰지않고, 원하는 자료형의 인덱스를 지정할 수 있다는 차이점이 있다. 구조는 key-value가 하나로 묶인 형태를 갖는다. 이런 구조때문에 원하는 값을 출력하고 싶을 때는 [인덱스]대신에 [key]가 들어가게 된다. 예제 코드는 아래와 같다.

1 conductor = {'first_name': '단테', 'last_name': '안'}
2 conductor['gender'] = 'male'
3 print(conductor)

딕셔너리에서 키만 가져오기 위해서는 .keys()를 사용하면 되고, 값만 가져오기 위해서는 .values()를 사용하면 된다. 키와 값을 모두 가져오려면 .items()를 사용하면 된다.


마무리

  • 함수(function) : 불려진 시점에 특정한 작업을 수행하며, 입력값과 출력값(반환값)을 가질 수 있다.
    • 인자(argument) : 함수를 호출할 때 전달하는 입력값
    • 매개변수(parameter) : 함수가 실행될 때 입력값이 들어올 변수
    • 반환값(return value) : 함수가 종료될 때 호출 지점으로 전달할 출력값
  • 변수(variable) : 값을 가리키는 이름이다.
    • 스코프(scope) : 변수가 유효한 범위
  • 연산자(operator) : 주어진 값들에 대해 정해진 연산을 수행한다.
    • 수리 연산자(mathematical operator) : +, -, *, /, //, **
    • 비교 연산자(comparison operator) : ==, !=, <, >, <=, >=, is
    • 논리 연산자(logical operator) : and, or
    • 소속 연산자(membership operator) : in
  • 자료형(data types) : 값들의 종류를 나타낸다.
    • 정수(int), 부동소수점 수(float), 불리언(bool), 문자열(str), 튜플(tuple), 리스트(list), 딕셔너리(dict)

0개의 댓글