[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: 리스트
배열1234567li
=
[
3
,
6
,
9
,
12
]
#선언
li[
0
]
#첫번째 원소에 접근
3
len
(li)
#list 길이 반환
4
- dict: 딕셔너리를 말하며 Key, Value 형태로 값 표현 123
person
=
{
"SirName"
:
"Hong"
,
"age"
:
20
}
#선언
person[
"age"
]
#접근
20
- set: 데이터 집합이며 dict, list, set의 차이점은 여기서 확인
연산자
- 산술연산자: +, -, /, *, ** (참고로 **는 제곱을 의미함)
- 비교연산자: >, <, ==, !=, >= <= (C와 동일)
- 논리연산자: or, and, not (C처럼 &&, ||가 아니다)
- in, not in 연산자: 값이 포함되어 있는지 판별하는 연산자1234567
>>> sports
=
[
'baseball'
,
'golf'
,
'football'
]
>>>
'baseball'
in
sports
True
>>>
'golf'
not
in
sports
False
제어문
- 조건문: if, else, elif12345678910
>>> 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으로 들여쓰는 동안은 하나의 블럭으로 간주됨12345678910
>>> fruits
=
[
'apple'
,
'grape'
,
'orange'
]
>>>
input
=
'apple'
>>>
if
input
in
fruits:
...
print
(
input
+
"를 입력하셨습니다."
)
...
print
(
input
+
"은 과일에 포함되어 있습니다."
)
>>>
else
...
print
(
input
+
"를 입력하셨습니다."
)
...
print
(
input
+
"은 과일에 포함되어 있지 않습니다."
)
apple를 입력하셨습니다.
apple은 과일에 포함되어 있습니다.
- 반복문: for, while123456
>>> sports
=
[
'baseball'
,
'golf'
,
'football'
]
for
sport
in
sports:
#:로 끝이 남에 주의
print
(sport)
baseball
golf
football
기타 명령어
- # : 주석 표현
- clear : 화면을 지움
- print() : 내용을 화면에 출력
- range(from, until): from부터 until 직전의 숫자를 포함하는 list 생성1234567891011
numbers
=
range
(
5
,
13
)
#5~12까지 list 생성
for
number
in
numbers:
print
(number)
5
6
7
8
9
10
11
12
- slicing: 지정된 list로부터 Subset을 생성하는 문법12345678910111213141516
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)
각 데이터 타입간의 형변환 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #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의 표현은 다른 언어와 약간의 차이가 있으며 아래와 같음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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)