OS
- 컴퓨터는 여러 하드웨어 제품을 포함하는데 이러한 장치들을 처리하기 위해 OS같은 운영체제를 실행
- 컴퓨터 내에서 하드웨어에 직접 접근할 수 있는 유일한 프로그램
- 예) 키보드에서 언떤 키가 눌렸는지, 저장소에서 데이터를 가져올 때 등 운영체제에 요청
인터프리터/가상머신
- 프로그래머와 컴퓨터 하드웨어 사이에 계층을 두어 사용자의 프로그램을 넘겨받아 명령어를 OS가 이해하는 언어로
바꾸면서 대신 실행
- OS상단에서 바로 프로그램을 작성하는 것 보다 더 쉽고 OS간 이식이 가능
인터프리터 사용법
- 확장자가 .py인 파일에 저장된 파이썬 프로그램을 실행하라고 명령
- 셸 프로그램으로 한 번에 한 명령어씩 입력하면서 인터프리터와 상호작용
타입
- 피연산자가 int와 float면 파이썬은 자동으로 int를 float로 변환
- 실수를 쓸 때는 소수점 아래 0 생략 가능하지만 가독성을 위해 선호하지 않음
- 정수 나눗셈 결과를 올림하지 않고 가장 가까운 정수로 내림값을 반환
-17 // 10 # 1
- 음수 연산자에 %,//를 쓸 경우 정수 나눗셈 결과를 내림하기 때문에 결과가 음수면 결괏값은 예상 값보다 1 작음
-17 // 10 # -2
- 나머지 연산자를 사용할 때 결괏값의 부호는 두 번째 연산자의 부호를 따름
-17 % 10 # 3
17 % - 10 # -3
유한정밀도
- 빠른 계산과 메모리 효율성을 위해 한 숫자에 대해 저장하는 정보 용량을 제한함
- 작은 수부터 큰 수 순으로 더해서 오류 최소화
연산자 우선순위
- 우선순위가 낮은 표현식을 괄호()로 묶어 우선순위를 높여 적용
컴퓨터 메모리
- 메모리 내 모든 위치는 집 주소처럼 고유한 식별 주소가 있음
- 정수와의 구별을 위해 identifier의 약자인 id 접두사를 사용해 id1, id2 처럼 표시
- 내장함수인 id를 이용해 실제 메모리 주소 확인 가능
오류
1. 구문 오류(syntax error)
:: 유효하지 않은 파이썬 코드를 입력했을 때 발생하는 오류
2. 의미 오류(semantic error)
:: 존재하지 않는 변수를 사용하는 등의 명령을 내렸을 때 발생하는 오류
긴 명령문
- 명령문이 길어지는 경우가 있는데 Python에서는 공백, 탭, 공백 문자를 포함해 한 줄에 최대 80개의 문자만 허용
- 하나의 명령문을 두 줄 이상에 표현하는 방법
- 괄호 안에서만 줄을 나눔
- 줄 연속 문자인 백슬래시(\) 사용
주석
- #을 이용해 주석문 사용
읽기 쉬운 코딩 작성
- 일관된 변수명 사용
- 적절한 공백을 사용해 읽기 쉽게 작성
# 프로그래밍 스타일 가이드 검색하면 다양한 예제가 있음
파이썬이 기억하고 재사용하는 객체
- Python 버전에 따라 작은 정수는 흔하기 때문에 처음 구동할 때 생성한 후 같은 객체를 재사용해 연산 속도 상승
변수
- 프로그램이 실행되면서 값이 변할 수 있는 수
- 대/소문자 구분
- 변수명은 철자와 숫자, 밑줄 기호를 사용해 변수명 생성
test-code! # 구두점 포함하고 있어 적절하지 않은 변수명
8test_code # 변수명은 숫자로 시작할 수 없음
- 변수에 값을 할당한 명령문을 할당문이라고 함
test_code = 13.5 # test_code 변수에 값 13.5를 할당
# test_code는 값 13.5를 참조
- 표현식에 변수가 나오면 그 변수가 참조하는 값으로 대체
지역변수
- 함수 내에서 생성한 변수
- 함수를 호출할 때마다 생성되며, 함수가 반환될 때 제거됨
- 함수 밖에서는 사용 불가
함수
내장함수
- abs, pow, round, int, float 같은 공통 연산을 수행하는 함수가 내장되어 있음
사용자정의 함수
- 사용자가 원하는 작업을 수행하기 위해 작성하는 함수
인수
- 함수 호출 시 괄호 사이에 들어가는 표현식
반환 값
- 함수에서 연산을 마치고 호출한 곳으로 반환할 값
- return문이 없는 함수는 None을 반환
함수 호출 규칙
- 왼쪽부터 순서대로 한 번에 한 인수씩 평가
- 결괏값을 함수에 전달
- 함수를 실행하고 함수 호출이 끝나면 값을 생성
함수의 동작 확인
- help(함수명)을 호출해 함수에 대한 설명을 확인
키워드
- Python 내부에서 사용하려고 예약해둔 단어로 Python이 의도한 대로만 사용 가능
- 키워드는 함수명, 변수명으로 사용 불가
- 키워드 목록
False |
assert |
del |
for |
in |
or |
while |
None |
break |
elif |
from |
is |
pass |
with |
True |
class |
else |
global |
lambda |
raise |
yield |
and |
continue |
except |
if |
nonlocal |
return |
|
as |
def |
finally |
import |
not |
try |
|
함수 덮어쓰기
- 같은 파일 안에 같은 함수명이 두 번 나올 경우 두 번째 함수가 덮어씀
네임스페이스
- 함수 호출을 실행할 때마다 그 호출에 쓰이는 지역변수를 저장할 임시 공간
- 함수가 반환될 때 제거됨
함수 디자인
- 첫 줄은 함수 헤더로 매개변수에는 함수에 전달할 저정보 타입을 표기하고, -> 뒤에 표기한 타입은 함수가 반환할 타입
- 문서화 문자열(""")을 사용해 함수가 호출될 때 어떤 일을 하는지 설명을 작성
- 함수의 예제와 반환값 표기
- 문서화 문자열 마침
- 함수 본문
- 이러한 내용은 생략 가능
def test_function(x: int, y: int) -> int:
""" # 문서화 문자열
x와 y간 수의 차이 반환
x와 y의 값은 0~200 사이의 값
>>> test_function(1,3)
2
"""
return y - x
텍스트 처리
문자열 표현
- " 또는 '로 감싸서 표현
- 문서화 문자열은 "로 표현하도록 권장
- " 내에 '로 감싸진 문자 삽입 가능
문자열 결합
- 'test' + 'code' 처럼 +의 두 피연산자가 문자열이면 결합연산자라고 부름
'test' + 'code'
>>> 'test code'
- * 연산자를 이용해 문자열 반복
'test' * 3
>>> 'testtesttest'
# 정수가 0이하일 경우 빈 문자열 생성
'test' * 0
>>> ''
탈출 문자열
- 백슬래시를 탈출문자라고 하며, 탈출문자에 작은따옴표를 합친 부분을 탈출 문자열이라 부름
탈출 문자열 |
설명 |
\' |
작은따옴표 |
\" |
큰따옴표 |
\\ |
백슬래시 |
\t |
탭 |
\n |
새 줄 |
\r |
캐리지 리턴 |
출력
- print함수를 이용해 메시지 출력
- 색, 글자체 등의 스타일 일체 허용하지 않음
- 키워드 매개변수인 sep를 사용해 각 값을 구분할 구분자 지정
- 키워드 매개변수인 end를 사용해 새 줄에서 시작하지 않고 빈 문자열로 끝내라고 하는 등 지정
정보 받기
- 내장함수인 input 함수를 사용해 입력 받을 수 있음
- 입력된 내용은 무조건 문자열로 반환
input_text = input()
>>> 입력된 문자열
# 숫자 입력받아 int형 변환
input_number = int(input())
>>> 입력된 숫자