[Python] 기초문법

2017. 10. 30. 16:19Others/Python & Deep Learning

Python의 특장점

  • 특징
    1. 오픈소스 (1991년 발표)
    2. 인터프리터형 언어
    3. 동적 변수 사용
  • 장단점
    1. 장점: 간결, 심플, 배우기 쉽고, 쓰기 쉽고, 높은 생산성, 낮은 진입장벽
    2. 단점: 장점이 곧 단점, 느린성능, 규모가 커질 수록 어려워지는 디버깅과 유지보수, 멀티쓰레딩에 취약
      (참고: 파이썬이 쉽고 심플하다는 뜻은 도구로써 쉽다는 뜻이지, 결코 개발이 쉽다는 의미가 아님. 도구가 중요한 것이 아니라 도구를 적재적소에 활용하는 것이 중요함)
  • 활용분야
    1. 배우기 쉽고, 간단하기 때문에 프로토타이핑이나 빠른 아이디어 검증이 중요한 연구, 과학분야에서 애용됨
    2. 수치와 통계처리 등 데이터 과학분야, 기계학습분야 등에서 주로 사용
  • 파생언어
    1. Python은 C언어로 구현되었기 때문에 CPython라고도 불림 (Original Python)
    2. C#구현버전은 IronPython
    3. Java구현버전은 Jython

Python 설치

  • 유의 사항: 3.x 버전은 2.x버전에 대한 하위호환성을 보장하지 않으므로 신중한 결정이 필요
  • 다운로드: Python 아나콘다 배포판 (데이터 분석에 중점을 둔 라이브러리와 IDE가 포함된 파이썬 버전 (500MB))

Python IDE

Windows 환경에서 Python을 설치하면 제공되는 Spyder IDE를 실행하여 Python 프로그래밍을 할 수 있음

자료형

  • 동적자료형: 자료형이 사전에 결정되는 것이 아니라 Javascript 처럼 할당한 값에 따라 변하는 자료형
  • 자료형확인: type() 함수로 자료형 파악가능 (예: type(1), type("a") 등)
  • 지원자료형: int, float, bool, str, list, dict, set
    1. str: 문자열을 말하며 "hello python" 혹은 'hello world' 형태로 표현
    2. bool : True, False로 표현 (첫글자 대문자 주의)
    3. list: 리스트 배열
      li = [3,6,9,12] #선언
      
      li[0] #첫번째 원소에 접근
      3
      
      len(li) #list 길이 반환
      4
      
    4. dict: 딕셔너리를 말하며 Key, Value 형태로 값 표현
      person = { "SirName": "Hong", "age":20 } #선언
      person["age"] #접근
      20
      
    5. set: 데이터 집합이며 dict, list, set의 차이점은 여기서 확인

연산자

  • 산술연산자: +, -, /, *, ** (참고로 **는 제곱을 의미함)
  • 비교연산자: >, <, ==, !=, >= <= (C와 동일)
  • 논리연산자: or, and, not (C처럼 &&, ||가 아니다)
  • in, not in 연산자: 값이 포함되어 있는지 판별하는 연산자
    >>> sports = ['baseball', 'golf', 'football']
    
    >>> 'baseball' in sports
    True
    
    >>> 'golf' not in sports
    False

제어문

  • 조건문: if, else, elif
    >>> sports = ['baseball', 'golf', 'football']
    >>> fruits = ['apple', 'grape', 'orange']
    >>> input = 'ski'
    
    >>> if input in sprots: #각 조건문은 :로 끝이 남에 주의
    ...     print("스포츠에 포함되었습니다.")
    >>> elif input in fruits:
    ...     print("과일에 포함되었습니다.")
    >>> else
    ...     print("스포츠와 과일에 포함되어 있지 않습니다.")
  • Block의 표현: { ... } 형태가 아니라 들여쓰기를 통해 코드블럭을 표현함. 즉 공백 4칸 혹은 Tab으로 들여쓰는 동안은 하나의 블럭으로 간주됨
    >>> fruits = ['apple', 'grape', 'orange']
    >>> input = 'apple'
    >>> if input in fruits:
    ...     print(input + "를 입력하셨습니다.")
    ...     print(input + "은 과일에 포함되어 있습니다.")
    >>> else
    ...     print(input + "를 입력하셨습니다.")
    ...     print(input + "은 과일에 포함되어 있지 않습니다.")
    apple를 입력하셨습니다.
    apple은 과일에 포함되어 있습니다.
  • 반복문: for, while
    >>> sports = ['baseball', 'golf', 'football']
     for sport in sports: #:로 끝이 남에 주의
        print(sport)
    baseball
    golf
    football

기타 명령어

  • # : 주석 표현
  • clear : 화면을 지움
  • print() : 내용을 화면에 출력
  • range(from, until): from부터 until 직전의 숫자를 포함하는 list 생성
    numbers = range(5, 13) #5~12까지 list 생성
    for number in numbers:
        print(number)
    5
    6
    7
    8
    9
    10
    11
    12
    
  • slicing: 지정된 list로부터 Subset을 생성하는 문법
    numbers = [1,2,3,4,5,6,7,8,9,10] #1~10까지 list 생성
    
    numbers[1:5] #Index 1부터 5 직전까지 얻기
    [2, 3, 4, 5]
    
    numbers[1:] #Index 1부터 끝까지 얻기
    [2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    numbers[:5] #Index 5 직전까지 얻기
    [1, 2, 3, 4, 5]
    
    numbers[:-1] #맨뒤에서 -1번째 값까지 얻기
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    numbers[-2:] #맨뒤에서 -2번째 부터 끝까지 얻기
    [9, 10]

형변환 (Casting)

각 데이터 타입간의 형변환 방법

#str을 실수로
py = '3.14'
float(py)

#str을 정수로
age = '20'
int(age)

#str을 bool로
male = 'False'
bool(male)

#int, float를 str로
score = 4.45
str(score)

 #ASCII Code를 str로
chr(97)

#str을 ASCII Code로
ord('a')

Class의 표현

Class의 표현은 다른 언어와 약간의 차이가 있으며 아래와 같음

class Person:
    def __init__(self, name, age): #생성자는 __init__로 표현
        self.name = name #멤버 변수는 할당하는 순간 생성
        self.age = age
            
    def show(self): #모든 메서드는 첫번째 매개변수로 self를 가지는 것이 관행
        print("Name: " + self.name)
        print("Age: " + str(self.age))

#인스턴스 생성 및 사용
person = Person("Hong", 20) 
person.show()
        
#실행결과
Name: Hong
Age: 20

유용한 사이트

  • 점프 투 파이썬: 파이썬 도서로 위키로 공개되어 있음 (https://wikidocs.net/book/1)