개요
Python 기초 문법에 관한 정리를 진행하려 한다! 어느정도 코딩 언어에 대한 이해가 있는 걸 기준으로 신기하거나 언어간 차별점 위주로 작성할 예정이다.
문자 출력
language = 'Node.js'
# Node.js 의 백틱 "`" 과 동일한 기능!
print(f'이것은 {language}가 아닙니다.') #이것은 Node.js가 아닙니다.
형변환
암묵적 형변환이 일어나는 경우 타입의 기준은 정보량이 더 보존되는 쪽으로 진행된다만 약간의 신기한건 문자열과 숫자는 동등하여 암묵적 변환이 불가능 하단 것이다.
print(4 + 6.0) # 10.0
# True = 1 / False = 0
print(True + 21 ) #22
# Node.js 와의 차이점 문자열과 숫자는 동등한 관계
print("문자열" + 17) #Error
단축 평가
논리 연산에서 두번째 피연산자를 평가하지 않고 결과를 결정하는 동작
# and 는 중간 과정에서 False의 값이 없다면 마지막 값을 뱉는다
print('a' and 'b') # b
print(3 and 0) # 0
print(3 and 5) # 5
print(5 and 3) # 3
# or 는 False를 제외한 첫번째 값을 뱉는다.
print('s' or 0) # s
print(15 or 12) # 15
print(0 or False or 5) # 5
Sequence Type
여러 개의 값들을 순서대로 나열하여 저장하는 자료형으로 파이썬만의 인덱싱 및 슬라이싱 방식이 신기하여 작성한다.
- 인덱싱 및 슬라이싱
my_list = [ 'arr', 'py' , 12.05, 0, [ 'arr2', 724] ]
# Iterable[시작:끝(미포함):방향성,간격]
# 시작 란이 공백일 경우 0에서 부터 시작
print(my_list[:3]) # ['arr', 'py', 12.05, 0]
# 마지막 방향성은 부호에 따라 정방향/역방향 숫자의 크기에 따라 간격을 의미한다
# 방향성이 음수일 경우 이에 맞춰 시작이 더 커야 한다
print(my_list[4:2:-1]) # [['arr2', 724], 0]
print(my_list[-2:-4:-1]) # [0, 12.05]
print(my_list[::2]) # ['arr', 12.05 , ['arr2',724]]
print(my_list[::-3]) # [['arr2', 724], 'py']
list
단순하게 생각하면 배열과 동일하지만, 배열 내에 들어가는 값에 타입 제한이 없다. (위의 예시에서 확인 가능)
tuple
list와의 차이점은 불변성이다. 하지만 그렇다면 왜 여기에 작성을 한걸까? 바로 대입과 교환 방법이 js의 배열 구조 분해 할당과 비슷하게 쓰인다.
# 빈 튜플 선언 시 소괄호가 사용되지만, 메인은 "," 로 구분이 된다.
my_tuple1 = ()
my_tuple2 = 1, 2
x, y = 15 , 20
print(x) # 15
# 사실 파이썬 내부에서 temp 변수를 선언 후 교환이 진행된다.
x, y = y, x
print(x) # 20
# 값 무시 (_): 필요 없는 값은 _로 가능
a, _, c = [1, 2, 3]
#나머지 묶기 (*): 남은 값을 리스트로 모을 때 사용
a, *b = [1, 2, 3, 4]
range
기본적으로 for문 발사대로 자주 애용되는 타입이다. 여기서 조금 신기한 특징이 있는데 바로 느긋한 연산(lazy evaluation)이다. 이 특징은 값을 미리 계산하지 않고, 이용/순환될 때에 실행이 된다는 점이다.
# range(시작:끝(미포함):방향성,간격)
# range(반복횟수) 이경우 0부터 시작한다
for i in range(5):
print(i)
# 0 1 2 3 4
한줄 평
- AI의 발전과 함께 대세에 올라타는 Python 레츠꼬