티스토리 뷰

개요


딥러닝을 공부하기 위해서 파이썬을 먼저 공부해야겠다는 생각을 했다. 기본적으로 다른 프로그래밍 언어(C/C++)를 숙지하고 있다는 가정하에 파이썬의 기초적인 문법을 전반적으로 정리해본다.






기본 문법


기본

문장 끝맺음 기호로 ;을 사용하지 않는다.

주석

# 이후에 입력되는 코드는 모두 주석

   # 주석

타입 추론

기본적으로 타입 추론을 지원하기 때문에 변수 이름을 쓰고 바로 값을 대입하면 해당 자료형의 변수로 바뀐다.

하나의 변수에 int를 대입했다가 바로 아래에서 string을 대입해도 동작하는 것이 특징이다.

들여쓰기

코드의 레벨을 나눌 때 {} 기호를 사용하지 않기 때문에 들여쓰기가 매우 중요하다.

같은 레벨의 들여쓰기는 같은 레벨로 표현한다.




연산자


산술 연산자

**

제곱을 계산한다.

k = 2 ** 10

# k = 1024


//

몫을 계산한다.

a = 10 // 3

# a = 3




논리 연산자

and

&&


or

||




조건문


if, else는 c-style 문법과 비슷하지만 else if는 elif로 줄여서 사용한다. in, not in 키워드 등을 사용해서 리스트 내에 요소를 검사할 수도 있다.




반복문 for


c++의 for each와 같은 개념이라고 생각하자. list의 각 원소를 순회하면서 반복을 도는 것이다.

for [index] in [list]

로 사용한다.


range() 응용

일반 for문처럼 사용하려면 list에 range(n)함수를 써서 간이 리스트를 생성해서 사용한다. range()는 0부터 입력받은 파라미터 갯수만큼 list를 생성해서 반환하는 함수이기 때문에 결과적으로

for i in range(5) 라는 구문은 for i in [0,1,2,3,4]와 같다.


enumerate() 응용

리스트의 인덱스 번호와 값을 묶어서 전달한다.

for i, value in ['apple', 'banana', 'pineapple']

처럼 사용할 수 있다.




반복문 while


조건문이 참일 동안 코드블록을 반복하게 하는 문법이다. if 조건문과 동일하게 in, not in 등을 활용할 수 있다.

c-style while과 동일하게 break(탈출), continue(강제진행) 키워드를 사용해서 반복문을 임의로 제어할 수 있다.




문자열(string)


python에서 string을 다루는 방법을 알아보자.

일단 format이 있다. c의 printf처럼 문자열에 변수를 대입할 수 있도록 지원하는 문법이다. 파이썬은 자료형이 없기 때문에 {}를 사용해서 string을 formatting한다. 문법은


[string변수 또는 리터럴].format([var1], [var2], …)


파이썬에서는 “(큰따옴표)와 ‘(작은따옴표)가 차이가 없다. 어떤것을 써도 상관없으며 다만 “ 안에서 “를 쓰려면 \” 처럼 사용해야하고 ‘ 안에서 ‘를 사용하려면 \’ 처럼 사용해야한다. 반대로 “안에서 ‘는 그냥 사용할 수 있고 ‘ 안에서 “도 그냥 사용할 수 있다.

swift와 동일하게 “”” “””또는 ‘’’ ‘’’처럼 3개를 연속으로 쓰면 개행문자까지 포함해서 모두 한 문자열로 인식한다. 그리고 이 안에서는 “와 ‘ 모두 자유롭게 사용할 수 있다.




리스트


배열과 비슷한 문법을 사용한다. 특이한점은 index에 음수를 입력하면 뒤에서부터 값을 얻을 수 있다는 점이다. 이 때 가장 마지막 값은 -1이 된다. (0은 +-가 없고 이미 첫번째 값이기 때문)

자료구조 리스트와 같은 개념이기 때문에 확장([리스트].append(), [리스트].extend())이나 중간 노드를 삭제(del [리스트], 리스트.remove())하는 등의 연산이 가능하다.

in은 리스트에 해당 값이 포함되어있는지 탐색하는 기능을 제공한다.

리스트를 다른 변수에 저장해도 포인터로 전달하는게 아니기 때문에 값의 복사가 일어난다.


append()와 extend()의 차이

append([5, 6])은 리스트 마지막에 [5, 6] 이라는 하나의 리스트를 추가하지만 extend([5, 6])은 5, 6 2개의 값을 추가한다.


List 표현식

List를 초기화할 때 간단한 for/if 표현식으로 일련의 값들을 채워넣을 수 있는 문법을 제공한다.

예를들어 1~100사이의 3의 배수로 리스트를 초기화하고싶다면 아래와 같이 간단하게 작성할 수 있다.

threeList = [i for i in range(1, 100) if i % 3 == 0]




튜플


위에서 함수의 반환값을 튜플로 만들어서 반환할 수 있다고 했는데 이 튜플을 다루는 방법을 알아보자.

튜플은 모든 기본 자료형을 전부 담을 수 있으며, 배열처럼 []를 사용해서 인덱스로 접근할 수 있다.

리스트와 비슷하지만 불변 자료형이라는 차이점이 있다.


packing

하나의 변수에 튜플을 대입하는 것을 말한다.

a = 2, 3
# a = (2, 3)


unpacking

튜플을 여러 변수에 나누어 저장하는 것을 말한다. 이 때 튜플의 갯수와 나누어 저장할 변수의 갯수가 동일해야한다.

a = 1, 2, 3
# a = (1, 2, 3)
b, c, d = a
# b = 1, c = 2, d = 3
b, c = a
# error




딕셔너리


key와 value를 가지는 컨테이너로 리스트와 사용법은 비슷하다.

{[key] : [value], [key] : [value], …}

형태로 작성하며 배열과 비슷하게 key로 접근하여 값을 얻어오거나 수정할 수 있다. 선언시 리스트와 다르게 {}를 사용해서 선언하는것을 유의하자.

key는 string을 사용해야하지만 value는 int, string, list 등 모두 사용할 수 있다.




함수


def 키워드를 사용해서 함수를 생성한다.

사용법은 c-style과 동일하며 return 이후에 반환할 값을 입력해서 값을 반환할 수 있다. 특이한점은 반환값을 , 로 구분해서 튜플 형태로 반환할 수 있다. 당연하겠지만 여러 종류의 자료형을 동시에 담아서 반환할 수도 있다.

함수를 호출할 때 매개변수의 이름으로 값을 대입해서 호출할 수 있다. C#이나 swift등 최신언어에서 제공하는 문법과 동일하다. 단 매개변수 이름을 전부 입력하지 않고 몇개만 입력한다면 에러가 발생하니 주의하자.

def PrintInfomation(name, age):
print(name, age)

PrintInformation("나연", 24)
# '나연', 25
PrintInformation(name = "다현", age = 21)
# '다현', 21
PrintInformation(age = 23, name = "사나")
# '사나', 23
PrintInformation(name = "지효", 22)
# error




모듈


import 키워드로 외부 모듈(코드)을 포함시켜서 사용할 수 있다. header파일을 포함하는 것 보다는 C++의 namespace와 비슷한 개념이라고 볼 수 있다. as 키워드로 모듈의 이름을 임의로 설정할 수 있다.

예를들어 datetime 모듈을 dt라는 이름으로 포함시키는 코드는 아래와 같다.

import datetime as dt




예외처리


try-exception 블록으로 예외를 처리할 수 있다. 다른 언어들에서 사용하는 try-catch와 동일한 기능을 하지만 이름만 좀 다르다.

예외의 이름을 모를 때는 as로 변환해서 이름을 알아낼 수 있다.

try:
a = 3 / 0
except Exception as ex:
print("error : ", ex)
# error : ZeroDivisionError


raise로 예외를 강제로 일으킬 수 있다. 다중 반복문을 탈출할 때 유용하게 사용할 수 있지만 남용하면 코드의 가독성을 떨어뜨리게 될 수 있다. Exception을 포함한 하위 클래스를 사용해서 발생시킬 수 있으며 except 로 예외를 처리할 수 있다.

try:
a = 30
if a % 3 == 0:
raise Exception("error 3")
except Exception as e:
print("exception : ", e)
# exception : error 3



'Programming > Language' 카테고리의 다른 글

C# Tutorial | 기본 문법  (0) 2018.10.29
스칼라(scala) - 패턴 매칭(match)  (0) 2017.09.13
스칼라(scala) - 함수  (0) 2017.09.12
스칼라(scala) - 변수(var) 또는 값(val)  (0) 2017.09.11
스칼라(scala) - List  (0) 2017.09.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함