파이썬(Python)
- 탄생 : 네덜란드 출신 프로그래머 귀도 반 로섬이 1991년 발표
- 영국BBC 코미디 프로 Monty Python's Flying Circus에서 따온 것
특징
- 간결한 코드
- 스크립트언어
- 한줄씩 바로 실행됨
- 풍부한 표준 라이브러리
- 직관적인 문법
실행
- path 추가 시 cmd에서 바로 사용 가능. python 입력 후 엔터. 파이썬 셸이 실행됨. >>>커서에 명령어 입력
- 기본 설치 시 함께 설치되는 IDLE shell을 실행해도 됨. 프로그램 메뉴에서. GUI 라이브러리인 tkinter 이용하여 개발
세팅
- Configure IDLE 메뉴에서 Options Fonts/Tabs에서 폰트 consolas 선택. 대문자I와 소문자l 구분 가능
- Highlights에서 IDLE Dark 테마
- 인텔리센스intelliSense 기능 제공
- 객체명 다음에 마침표(.)와 탭 키를 차례로 누르면 사용 가능한 속성과 함수 표시
- 함수명 다음에 괄호( 와 탭 키를 누르면 함수 호출 팁call tip 표시
- 단어를 누르던 중 탭은 자동완성
문법
대소문자 구별
++연산자 사용 못함
1) 문자열
내장built-in 클래스 str로 처리
작은따옴표'나 큰따옴표"로 표시해도 결과 같음
이스케이프문자 : \백슬래시로 시작. \t : 탭, \n : 줄바꿈, \\ : \자체 표시, \' : 작은따옴표 표시, \" : 큰따옴표
문자를 그대로 표시하고 싶으면 raw string 기호인 r을 앞에 추가
ex) print(r'C:\Windows\System32\notepad.exe')
이스케이프 형식을 사용하지 않으려면 문자열에서 사용하지 않는 따옴표 3개로 감쌈
ex) print('''"It's not that..."''')
'''나 """는 주석으로도 사용
#은 한줄 주석
문자열 출력 포맷
%기호방식
{} 기호방식
f-strings 방식
인덱싱
문자열에 인덱스 숫자를 사용하면 특정 위치 문자를 다룰 수 있음
첫번째 시작은 0, 제일 마지막 문자열 지정은 -1
따라서 0, 1, 2 이런 식뿐만 아니라 -6, -5, -4, -3... 이런 식으로 -1까지 인덱스를 사용할 수도 있음
word = 'pyton'
print(word[0])
p 표시됨. =>print(word[-6])도 동일 결과
슬라이싱
word[0:6] 같이 범위 지정도 가능함
=> 왜 [0:5]가 아닐까? word[0]부터 몇개의 인덱스를 표시하느냐 하는 의미인 듯.
word[0:0]은 아무것도 출력 안함. word[0:1]은 p 1개만 출력.
word[0:] => 뒷자리 지정하지 않으면 끝까지 범위
word[:6] => 앞자리 미지정 시 처음부터
word[:-1] => 2번째 인덱스까지 표시됨. 왜? 위와 마찬가지로 끝 문자에서 -1개하고 출력이라 1문자 출력안됨
word[:] => 전체 출력
word[:0] => 아무것도 출력 안함
2) 산술연산
+-*/ 지원.
나눗셈 몫 연산자 //
나눗셈 나머지 %
연산자 우선순위
() 그루핑
f() 함수호출
x[index:index] 슬라이싱
x[index] 인덱싱
x.속성 속성참조
** 거듭제곱
~x 비트연산 NOT(논리연산 NOT이 아님)
+x, -x 양음수 표현
*/% 곱셈, 나눗셈, 나머지
+- 덧셈, 나눗셈
<< >> 비트이동
& 비트연산 AND
^ 비트연산 XOR
| 비트연산 OR
in, not in, is, is not, <, > 등 비교 연산
not x 논리연산 NOT
and 논리연산 AND
or 논리연산 OR
lamda 람다표현식
흐름제어
if 조건문
if rsi > 70 :
print(
elif rsi <30 :
print(
else :
for 반복문
for i in [1, 3, 5]
print(i)
while 반복문
i=1
while i < 7 :
print(i)
i += 2
if 상황 :
continue
if 상황 :
break
else :
print()
위와 같이 처리도 가능
try:
오류처리할 상황을 작성
except Exception as e :
print('오류발생 : ', str(e))
이런 식으로 예외 처리
<자료구조>
반복 자료형
1) 리스트
대괄호 사이에 각 원소들을 쉼표로 구분. 다양한 자료형을 한번에 넣을 수도 있음
ls = ['one', 4, 5, [1,2,3])
ls[3][1] => 위에서 1. 즉 4번째 리스트의 1번째 값을 이렇게 지정할 수도 있음
+연산자로 리스트 뒤에 다른 리스트 추가 가능
리스트 * 숫자. 이렇게 리스트를 반복해서 표시 가능
리스트 대신 range() 함수 사용 가능
range(시작값, 멈춤값, 증가값)
증가값 생략하면 1씩 증가
enumerate() 함수 반복과정에서 인덱스 구할 수 있음
enumerate(반복자료형, 인덱스시작값)
인덱스시작값 생략 시 인덱스0부터 시작
split()함수
인수로 주어진 문자로 문자열을 구분. 인수 없으면 공백을 기준으로 문자열 분리
'They are coming'.split() => 공백을 기준으로 리스트 'They' 'are' 'coming' 문자열 만듦
join()
인수로 주어준 문자를 구분자로 넣어서 문자열을 합침
' '.join(리스트) => 리스트 문자열을 공백을 넣어서 하나의 문자열로 만듦
2) 튜플
리스트처럼 다양한 자료형의 원소를 가지나 변경불가. 대괄호가 아닌 괄호()로 표시
3) 딕셔너리
{키:값}
키와 값을 하나의 원소로 가짐
crispr = {'EDIT' : 'Editas Medicine', 'NTLA' : 'Intellia Therapeutics'} 같은 식
4) 셋(set)
중복이 없는 원소의 집합
중괄호 사이에 원소들을 쉼표로 구분
생성한 순서대로 원소가 저장되지 않고 자동 정렬되고 중복 제거됨. 따라서 인덱싱이 불가능함
대신 교집합, 합집합, 차집합을 구할 수 있음
&, |, -를 사용
셋은 다른 반복자료형처럼 리터럴로 원소가 없는 상태 생성 불가. s=set()으로 생성해야 함. s={} 딕셔너리가 됨
파이썬에서 클래스에 속하지 않으면 함수
클래스에 속하면 메소드라고 부름
람다
이름 없는 간단한 함수를 만들 때 사용
def lambda(인수) :
return 표현식
모듈
보통 컴파일이 완료된 바이너리를 의미하나 파이썬에서는 .py확장자를 갖는 파일을 지칭
여러 모듈을 특정 디렉토리에 모아놓은 것을 패키지라 부름