티스토리 뷰
개요
딥러닝을 공부하기 위해서 파이썬을 먼저 공부해야겠다는 생각을 했다. 기본적으로 다른 프로그래밍 언어(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 |
unpacking
튜플을 여러 변수에 나누어 저장하는 것을 말한다. 이 때 튜플의 갯수와 나누어 저장할 변수의 갯수가 동일해야한다.
a = 1, 2, 3 |
딕셔너리
key와 value를 가지는 컨테이너로 리스트와 사용법은 비슷하다.
{[key] : [value], [key] : [value], …}
형태로 작성하며 배열과 비슷하게 key로 접근하여 값을 얻어오거나 수정할 수 있다. 선언시 리스트와 다르게 {}를 사용해서 선언하는것을 유의하자.
key는 string을 사용해야하지만 value는 int, string, list 등 모두 사용할 수 있다.
함수
def 키워드를 사용해서 함수를 생성한다.
사용법은 c-style과 동일하며 return 이후에 반환할 값을 입력해서 값을 반환할 수 있다. 특이한점은 반환값을 , 로 구분해서 튜플 형태로 반환할 수 있다. 당연하겠지만 여러 종류의 자료형을 동시에 담아서 반환할 수도 있다.
함수를 호출할 때 매개변수의 이름으로 값을 대입해서 호출할 수 있다. C#이나 swift등 최신언어에서 제공하는 문법과 동일하다. 단 매개변수 이름을 전부 입력하지 않고 몇개만 입력한다면 에러가 발생하니 주의하자.
def PrintInfomation(name, age): |
모듈
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
try: |
try: |
'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
- 국내여행
- DesignPattern
- 자료구조
- Spring
- SHADER
- database
- C/C++
- 데이터베이스
- 운영체제
- ios
- Java
- 수학
- C
- SwiftUI
- JSP
- 드라마
- 알고리즘
- winsock
- rxswift
- game
- ue4
- machine learing
- Cocos2d-x
- SOCKET
- mongoDB
- scala
- Git
- OS
- C++
- swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |