[Python] 기초문법
2017. 10. 30. 16:19ㆍOthers/Python & Deep Learning
Python의 특장점
- 특징
- 오픈소스 (1991년 발표)
- 인터프리터형 언어
- 동적 변수 사용
- 장단점
- 장점: 간결, 심플, 배우기 쉽고, 쓰기 쉽고, 높은 생산성, 낮은 진입장벽
- 단점:
장점이 곧 단점, 느린성능, 규모가 커질 수록 어려워지는 디버깅과 유지보수, 멀티쓰레딩에 취약
(참고: 파이썬이 쉽고 심플하다는 뜻은 도구로써 쉽다는 뜻이지, 결코 개발이 쉽다는 의미가 아님. 도구가 중요한 것이 아니라 도구를 적재적소에 활용하는 것이 중요함) - 활용분야
- 배우기 쉽고, 간단하기 때문에 프로토타이핑이나 빠른 아이디어 검증이 중요한 연구, 과학분야에서 애용됨
- 수치와 통계처리 등 데이터 과학분야, 기계학습분야 등에서 주로 사용
- 파생언어
- Python은 C언어로 구현되었기 때문에 CPython라고도 불림 (Original Python)
- C#구현버전은 IronPython
- 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
- str: 문자열을 말하며 "hello python" 혹은 'hello world' 형태로 표현
- bool : True, False로 표현 (첫글자 대문자 주의)
- list: 리스트
배열li = [3,6,9,12] #선언 li[0] #첫번째 원소에 접근 3 len(li) #list 길이 반환 4
- dict: 딕셔너리를 말하며 Key, Value 형태로 값 표현
person = { "SirName": "Hong", "age":20 } #선언 person["age"] #접근 20
- 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)