Python Interpreter
코드 편집기
가장 기초적인 프로그래밍 문법 개념
변수는 값을 저장하는 장소이며, 메모리 주소를 가지고 있고, 값은 메모리 주소에 할당됨
변수와 메모리 주소
선언되는 순간 메모리 특정영역에 물리적인 공간이 할당됨
Dynamic Typing
Basic Operations
List
colors = ['Red', 'Blue', 'Green']
print(colors[0]) # Red
print(colors[1]) # Blue
print(colors[-1]) # Green
print(len(colors)) # 3
colors = ['Red', 'Blue', 'Green', 'Black', 'White', 'Yellow', 'Gray']
print(colors[0:3], colors[-2:0]) # 0부터 2까지, -2부터 끝까지
print(colors[:]) # 처음부터 끝까지
print(colors[-50:50]) # 범위를 넘어갈 경우 자동으로 최대 범위 지정
print(colors[::2], a[::-1]) # 2칸 단위로, 역으로 슬라이싱
copy issue??
num1 = [1, 5, 2, 3, 4]
num2 = num1
print(num2) # [1, 5, 2, 3, 4]
num1.sort()
print(num2) # [1, 2, 3, 4, 5]
## 해결법 ##
# 1
num2 = num1[:]
# 2
num2 = list(num1)
# 3
num2 = num1.copy()
# 4
num2 = [] + num1
패킹: 한 변수에 여러 개의 데이터를 넣는 것
언패킹: 한 변순의 데이터를 각각의 변수로 변환
num = [1, 2, 3, 4] # 패킹
a, b, c, d = num # 언패킹
2차원 리스트 복사
import copy
a = [[10, 20], [30, 40], [50, 60]]
b = copy.deepcopy(a) # copy.deepcopy 함수를 사용하여 깊은 복사
b[0][0] = 100
print(a) # [[10, 20], [30, 40], [50, 60]]
print(b) # [[100, 20], [30, 40], [50, 60]]
어떤 일을 수행하는 코드의 덩어리
def 함수 이름 (parameter1, ....):
수행문1 (statements)
수행문2 (statements)
return <반환값>
parameter: 함수의 입력 값 인터페이스
argument: 실제 parameter에 대입된 값
%-format (과거에 사용)
print('%s %s' % ('red', 'blue'))
print('%d %d' % (1, 2))
num = 1; color = 'red'
print("color: %s and number: %d" % (color, num))
str.format 함수
print('{} {}'.format('red', 'blue'))
print('{} {}'.format(1, 2))
num = 1; color = 'red'
print("color: {} and number: {}".format(color,num))
print("color: {0} and number: {}".format(color,num))
f-string (최근에 많이 사용)
num = 1; color = 'red'
print(f"color: {color} and number: {num}")
# padding
print(f'{num:10}') 1
print(f'{num:>10}') 1
print(f'{num:*<10}') 1*********
print(f'{num:*>10}') *********1
print(f'{num:*^10}') ****1*****
Condition
if <조건>:
<수행 명령> # 조건이 True일 경우
else:
<수행 명령> # 조건이 False일 경우
x == y: x와 y의 값이 같은지 검사
x is y: x와 y의 메모리 주소가 같은지 검사
# tip. -5 ~ 256은 정적 메모리로 저장되어 있다!
a = 100
b = 100
a is b # True
a = 300
b = 300
a is b # False
and 연산
or 연산
not 연산
- not T ⇒ F
- not F ⇒ T
# 참고
a = 100
b = 10
c = 0
d = ''
a and b # 10
c and d # 0
a or b # 100
c or d # ''
value = 12
is_even = True if value % 2 == 0 else False # True
Loop
for 변수 in iterator_object:
<수행 명령>
조건이 만족하는 동안 반복 명령문 수행
while 조건:
<수행 명령>
Debugging
String
시퀀스 자료형으로 문자형 data를 메모리에 저장
1 byte(8 bit) 크기로 한 글자씩 메모리 공간이 할당됨
Indexing (List와 같은 형태로 데이터를 처리함)
Slicing (List와 동일)
덧셈, 뺄셈 연산 가능, in 명령으로 포함여부 체크
내장함수
함수명 | 기능 |
---|---|
len(s) | 문자열 길이 반환 |
s.upper() | 대문자로 변환 |
s.lower() | 소문자로 변환 |
s.capitalize() | 첫 문자를 대문자로 변환 |
s.title() | 제목 형태로 변환 (띄워쓰기 후 첫 글자만 대문자) |
s.count(’a’) | 문자열 s에 ‘a’가 들어간 횟수 반환 |
s.find(’a’) | 문자열 s에 ‘a’가 들어간 위치 반환 (처음 찾은 위치 반환) |
s.rfind(’a’) | 문자열 s에 ‘a’가 들어간 위치 반환 (가장 마지막에 찾은 위치 반환) |
s.startswith(’a’) | 문자열 s는 ‘a’로 시작하는 문자열여부 반환 |
s.endswith(’a’) | 문자열 s는 ‘a’로 끝나는 문자열여부 반환 |
s.strip() | 좌우 공백 제거 |
s.rstrip() | 오른쪽 공백 제거 |
s.lstrip() | 왼쪽 공백 제거 |
s.split() | 공백 기준으로 나눠 리스트로 반환 |
s.split(’a’) | a를 기준으로 나눠 리스트로 반환 |
s.isdigit() | 문자열이 숫자인지 여부 반환 |
s.islower() | 문자열이 소문자인지 여부 반환 |
s.isupper() | 문자열이 대문자인지 여부 반환 |
특수문자
raw string
특수 기호인 \ escape 글자를 무시하고 그대로 출력
print(r"첫번째 줄. \n 두번째 줄") # 첫번째 줄. \n 두번째 줄
Function 2
객체의 주소가 함수로 전달되는 방식
전달된 객체 변경시 호출자에게 영향을 주나, 새로운 객체 생성시 영향 X
def func(nums):
nums.append(1) # 기존 객체의 주소값에 [1] 추가
nums = [1, 2, 3] # 새로운 객체 생성
코딩 컨벤션