[Python] 상수와 변수 : 변수 표기법, 대입 연산자, 상수, enum 라이브러리, 자료형, 이스케이프 코드, 문자열, 문자열 함수
📌 변수 표기법
[ 🐪 카멜 표기법 ]
: 단어가 등장할 때마다 대문자로 구분하여 작성 (중간에 툭 튀어나온 낙타를 연상)
ex) helloWorld
[ 🐍 스네이크 표기법 ]
: 단어가 등장할 때마다 _로 구분하여 작성 (길게 이어진 뱀을 연상)
ex) hello_world
📌 대입 연산자와 메모리
[ 대입연산자 ‘=’ ]
왼쪽 변수값에 오른쪽 값을 대입해줌
Python에서의 대입연산자의 경우 변수 = 변수로 좌 변수 선언시 메모리의 주소가 복사됨
ex) x = 5, y = x → x와 y의 메모리 주소가 같게 됨 (연동)
📌 상수와 enum 라이브러리
[ 상수 ]
: 수식에서 변하지 않는 값, 주로 전체 대문자로 표현
[ enum ]
: 서로 관련이 있는 여러 개의 상수의 집합을 정의하는 라이브러리
( 실무에서 상수를 선언할 때 주로 사용 )
ex)
import enum
class RAINBOW(enum.Enum):
RED = (enum.auto(), 0)
ORANGE = (enum.auto(), 1)
YELLOW = (enum.auto(), 2)
GREEN = (enum.auto(), 3)
BLUE = (enum.auto(), 4)
INDIGO = (enum.auto(), 5)
VIOLET = (enum.auto(), 6)
print(Rainbow.Red.name)
# RED
print(Rainbow.Red.value[0])
# <enum.auto at 0x7f859669cca0>
print(Rainbow.Red.value[1])
# 0
이때, enum.auto()는 기존에 어떤 숫자가 할당되어있는지 구애받지 않을 수 잇도록 새로운 유일 값을 할당해줌
📌 자료형
Python에는 다양한 자료형이 존재하며,
type(변수) 함수를 통해 자료형을 return받아 확인해볼 수 있음
ex)
a = 5
b = 'Hello World'
c = [1, 2, 3]
type(a), type(b), type(c)
# (int, str, list)
📌 Escape Code
[ ❓ Why ]
➡️ 문자열을 작성할 때, ‘ /” 등이 포함되어야 한다면? → Escape Code 사용
위와 같은 오류를 마주하지 않기 위해서, 문자열 내부에 사용 가능한 이스케이프 코드 존재
\\n : 문자열 안에서 줄을 바꿀 때 사용
\\t : 문자열 사이에 탭 간격을 줄 때 사용
\\\\ : 문자 \\를 그대로 표현할 때 사용
\\' : 작은 따옴표 '를 그대로 표현할 때 사용
\\" : 큰 따옴표 "를 그대로 표현할 때 사용
📌 문자열 Indexing과 Slicing
[ Indexing ]
: 무언가를 가르킴 (0부터 시작)
ex) x = “1234567890” → x[0] ==1
ex) x = “1234567890” → x[-1] == 0
이때, 음수 값을 활용하여 뒤에서부터 접근 가능
[ Slicing ]
: 무언가를 잘라냄 ([시작:끝:간격]과 같이 사용됨)
시작과 끝의 경우 생략한다면 해당 문자열의 시작과 끝 index를 의미하며
간격의 경우 생략한다면 1을 의미
ex) x = “1234567890” → x[:3] == ‘123’
이때, 간격이 음수일 경우 역방향을 의미
[ Indexing Slicing 활용 ]
Indexing과 Slicing의 경우 타 자료구조에서도 많이 활용되며, 헷갈릴만한 요소가 있기에 충분한 연습이 필요
💡 글이 너무 길어 인덱스를 파악하기 어려울 때
문자열1.find(문자열2) → 문자열1의 첫번째 문자열2의 시작 index를 return
이때, 문자열2가 존재하지 않을 경우 -1 return (오류 X)
💡 Slicing의 시작 부분이 끝 부분보다 나중 index를 의미할 때
시작 부분이 끝 부분보다 나중 index를 의미할 경우, 빈 문자열 return
만약 거꾸로 출력을 원하는 경우, 간격을 -1로 설정
(마찬가지로, 간격이 -1임에도 시작 부분이 끝 부분보다 먼저의 index를 의미한다면 빈 문자열 return)
💡 Slicing에서, 시작 부분 혹은 끝 부분이 index의 범위를 벗어났을 때
Slicing에서, 시작 부분 혹은 끝 부분이 index의 범위를 벗어났을 경우, 범위 내에 존재하는 문자열만 return
(뒤에서부터를 의미하는 음수도 동일)
💡 Indexing에서, index가 범위를 벗어났을 때
Indexing에서, index가 범위를 벗어났을 경우 out of range 오류 발생
(뒤에서부터를 의미하는 음수도 동일)
📌 문자열 포매팅
[ ❓ Why ]
➡️ 문자열 안에 변수를 넣어 출력하고 싶다면? → 문자열 포매팅 사용
여러가지 방법이 있지만, % 서식기호와 f 문자열 포매팅을 가장 많이 활용
(특히 실무에서는 주로 f 문자열 포매팅 활용)
[ % 서식기호 ]
정수 : %d
문자열 : %s
실수 : %f (%0.숫자f를 사용하여 소수점 표현 가능)
ex)
print("I eat %d apples." % 3)
print("I eat %s apples." % "five")
print("파이는 %0.3f" % 3.1428)
[ f String Formatting ]
문자열 앞에 f를 작성한 후, {변수 명}을 사용하여 변수 활용
ex)
number = 10
day = "three"
print(f"I ate {number} apples. so I was sick for {day} days.")
📌 문자열 함수
[ 문자열 길이 연산 ]
len(문자열)
: 문자열 길이 return
ex)
x = "Hello World"
print(len(x))
# 11
[ 문자열 내의 문자열 개수 ]
문자열1.count(문자열2)
: 문자열 1에서 문자열 2의 개수 return
ex)
x = "Hello World"
print(x.count('l'))
# 3
[ 문자열 내의 문자열 탐색 ]
문자열1.find(문자열2)
: 문자열 1에서 문자열 2의 위치정보(idx) return
ex)
x = "Hello World"
print(x[x.find('W')])
# 'W'
[ ❗ ] find 함수의 경우 존재하지 않는 문자열을 찾을 때 -1을 return하므로, x[x.find('a')] == x[-1] == ’d’ 가 됨에 주의
[ 문자열 섞기 ]
구분자.join(문자열)
: 문자열 사이사이에 구분자를 join한 결과 return
ex)
x = "Heelo World"
print('-'.join(x))
# H-e-l-l-o- -W-o-r-l-d
[ 문자열 자르기 ]
문자열.split(구분자)
: 문자열을 구분자를 기준으로 split하여 return
ex)
x = "Hello World"
print(x.split(' '))
# ['Hello', 'World']
[❗] 문자열에서 구분자는 제외됨에 주의
[ 문자열 공백 제거 ]
문자열.strip()
: 문자열 좌우 공백 제거
ex)
x = " Hello World "
print(x.strip())
# Hello World
[❗] 내부 공백은 제거되지 않음에 주의
+) 문자열 다룰 때 양 옆 공백 제거해주는 습관 들이기
+) 왼쪽 공백 지우는 lstrip(), 오른쪽 공백 지우는 rstrip() 존재
[ 문자열 대체 ]
문자열1.replace(문자열2, 문자열3)
: 문자열1의 문자열2를 문자열3으로 대체
ex)
x = "Hello World"
print(x.replace(' ', '_'))
# Hello_World
[❗] 문자열2가 존재하지 않을 경우 오류나지 않고 대체가 되지 않으며 종료