- 목차
- 숫자형의 특징
- 문자열의 특징
- 문자열 포맷팅
- 주석 처리
리터럴 (Literal)
소스코드 상에서 내장 자료형의 상수 값을 나타내는 용어
>>> 15 # 정수형 리터럴
15
>>> 3.14 # 부동소수점 숫자형 리터럴
3.14
>>> '파이썬' # 문자열 리터럴
'파이썬'
>>> True # 부울형 리터럴
True
>>> [1, 2, 3] # 리스트형 리터럴
[1, 2, 3]
type()
함수
파이썬은 값에 의해 자료형이 결정되는 동적 타이핑 언어의 성격을 가지므로 type() 함수를 통해 자료형을 확인한다.
>>> type(15)
<class 'int'> # 정수형
>>> type(3.14)
<class 'float'> # 부동소수점 숫자형
>>> type('파이썬')
<class 'str'> # 문자열형
>>> type(True)
<class 'bool'> # 부울형
>>> type([1, 2, 3])
<class 'list'> # 리스트형
1. 숫자형의 특징
숫자형
숫자 리터럴이 사용된 자료형
- 정수형 : 5
- 부동소수점형 : 3.14
- 허수형 : 3 + 2j
정수형
>>> 7 # 양의정수
7
>>> 0 # 영
0
>>> -3 # 음의정수
-3
>>> 79228162514264337593543950336
79228162514264337593543950336
# 정수형의 길이는 무제한이며, 메모리가 허용하는 범위까지 사용할 수 있음.
>>> 0o177 # 0o 접두어 : 8진수 사용
127
>>> 0o377
255
>>> 0xdeadbeef # 0x 접두어 : 16진수 사용
3735928559
>>> 0b100110111 # 0b 접두어 : 2진수 사용
311
>>> 100_000_000_000 # 정수형 리터럴 내의 _는 무시됨
100000000000
>>> 0b_1110_0101
229
부동소수점형
>>> 3.14 # 양의 부동소수점
3.14
>>> -2.4 # 음의 부동소수점
-2.4
>>> 10. # 소수부 생략
10.0
>>> .001 # 정수부 생략
0.001
# 매우 큰 수, 매우 정밀한 수를 표현하기 위해 지수 표기법 사용 가능
>>> 1e100
1e+100
>>> 3.14e-10
3.14e-10
>>> 0e0
0.0
>>> 3.14_15_93 # 부동소수점 숫자형 리터럴 내의 _는 무시됨
3.141593
허수형
# 파이썬의 허수형은 j 접미사를 사용함
>>> 3.14j
3.14j
>>> 10.j
10j
>>> 10j
10j
>>> .001j
0.001j
>>> 1e100j
1e+100j
>>> 3.14e-10j
3.14e-10j
# 허수형 리터럴 내의 _는 무시됨
>>> 3.14_15_93j
3.141593j
2. 문자열의 특징
문자열
문자들의 집합. ""
, ''
파이썬은 자료형으로서의 문자형은 제공하지 않는다.
>>> "안녕하세요" # 5음절의 문자열로, 문자열의 길이가 5임
'안녕하세요'
>>> "5" # 1음절의 문자열로, 문자열의 길이가 1임
'5'
>>> '홍길동'
'홍길동'
>>> '가'
'가'
따옴표 안에 따옴표를 사용할 수 있다.
>>> "'시간의 역사' 남기고 떠난 스티븐 호킹..."
"'시간의 역사' 남기고 떠난 스티븐 호킹..."
>>> '"시간의 역사" 남기고 떠난 스티븐 호킹...'
'"시간의 역사" 남기고 떠난 스티븐 호킹...'
그러나 같은 따옴표를 사용할 수는 없다. 같은 따옴표를 사용할 경우 이스케이프 시퀀스 \
를 사용해야 한다.
>>> ''시간의 역사' 남기고 떠난 스티븐 호킹...'
SyntaxError: invalid syntax
# 작은 따옴표(') 문자 자체를 의미하는 이스케이프 시퀀스 작은따옴표(\') 문자 조합 사용
>>> '\'시간의 역사\' 남기고 떠난 스티븐 호킹...'
"'시간의 역사' 남기고 떠난 스티븐 호킹..."
문자열을 다중행으로 표현할 수 있다.
>>> """
안녕하세요
파이썬 프로그래밍을
시작합니다.
"""
'\n안녕하세요\n파이썬 프로그래밍을\n시작합니다.\n'
>>> print('\n안녕하세요\n파이썬 프로그래밍을\n시작합니다.\n')
안녕하세요
파이썬 프로그래밍을
시작합니다.
>>> print("""
안녕하세요
파이썬 프로그래밍을
시작합니다.
""")
안녕하세요
파이썬 프로그래밍을
시작합니다.
이스케이프 시퀀스
프로그램의 소스 코드 내에서 사용할 수 있도록 백슬래시() 기호와 조합해서 사용하는 사전에 정의해둔 문자 조합으로 문자열의 출력 결과를 제어하기 위해 사용함
\\
: 백슬래시 (\)
>>> print("백슬래시\\")
백슬래시\
# 백슬래시(\) 하나를 사용할 경우:
# 백슬래시(\)와 큰 따옴표(")의 이스케이프 문자 조합이 또 다른 이스케이프 시퀀스가 됨.
\'
: 작은따옴표 (')
>>> print("작은 따옴표 \'를 출력합니다."
작은 따옴표 '를 출력합니다.
# 작은 따옴표(')는 문자열 리터럴을 만들 때 사용됨:
# 작은 따옴표(') 자체를 의미하려면, 백슬래시(\)와의 이스케이프 문자 조합이 필요
\"
: 큰따옴표 (")
>>> print("큰 따옴표 \"를 출력합니다."
작은 따옴표 "를 출력합니다.
# 큰 따옴표(")는 문자열 리터럴을 만들 때 사용됨:
# 큰 따옴표(") 자체를 의미하려면, 백슬래시(\)와의 이스케이프 문자 조합이 필요
\n
: 라인 피드 (LF) — 줄바꿈\t
: 수평 탭(TAB) — 탭
>>> print("****\t****\t****\n****\t****\t****")
**** **** ****
**** **** ****
3. 문자열 포맷팅
문자열 포맷팅
문자열 내에 사용된 문자열 표시 유형(문자열 포맷 코드)을 특정 값으로 변경하는 기법
파이썬은 %
포맷팅, str.format()
함수를 이용한 문자열 포맷팅을 제공한다.
%-포맷팅을 사용한 문자열 포맷팅
유형 | 내용 |
%s | 문자열 포맷 |
%c | 문자 포맷. 정수를 유니코드 문자로 변환해 출력 |
%d | 10진 정수로 출력 |
%o | 8진수로 출력 |
%x | 16진수로 출력 |
%f | 부동소수점 숫자로 출력. 소수점 이하 6자리의 정밀도를 기본값으로 가짐 |
%% | % 문자 자체를 출력 |
# %s : % 다음의 값을 문자열로 변환해 처리하는 기능을 가짐.
>>> "이름: %s" % "홍길동"
'이름: 홍길동'
>>> "나이: %s 세" %20
'나이: 20 세'
>>> "결혼: %s" % False
'결혼: False'
>>> "키: %s cm" %180.5
'키: 180.5 cm'
# 자료구조 튜플 사용, 각 원소를 인자로 각각의 %s에 전달함
>>> "이름: %s\n나이: %s세 " % ("홍길동", 20)
'이름: 홍길동 \n나이: 20세 '
# 자료구조 사전 사용
>>> "이름: %(name)s \n나이: %(age)s세 " % {"name" : "홍길동", "age" : 20}
'이름: 홍길동 \n나이: 20세 '
# %c, %d로 문자열 포맷팅 적용
>>> "%c => %d" % (97, 97)
'a => 97'
# %d, %o, %x로 문자열 포맷팅 적용
>>> "%d %o %x" %(10, 10, 10)
'10 12 a'
# ord : 유니코드 '가'에 대한 정수값
>>> "%s %d %x" % ("가", ord("가"), ord("가"))
'가 44032 ac00'
# %f로 문자열 포맷팅 적용
>>> "%f %d" % (3.14, 3.14)
'3.140000 3'
# %%로 문자열 포맷팅 적용
>>> "%d 점은 상위 %d%%에 속합니다." %(98,1)
'98 점은 상위 1%에 속합니다.'
문자열 출력 폭과 정렬 방향
>>> "%10s" % "우측정렬" # 출력할 문자열의 폭이 10, 정렬의 방향이 우측임
' 우측정렬'
>>> "%-10s" % "좌측정렬" # 출력할 문자열의 폭이 10, 정렬의 방향이 좌측임
'좌측정렬 '
부동소수점 숫자의 출력 폭 지정, 소수점 이하의 정밀도 표현 적용
>>> "%0.2f" % 3.141592 # 부동소수점을 소수점 2자리까지 표시함
'3.14'
>>> "%10.2f" % 3.141592 # 부동소수점을 소수점을 포함한 전체 자리수를 10으로 함
' 3.14'
>>> "%010.2f" % 3.141592 # 앞의 남은 자리를 0으로 채움
'0000003.14'
str.format()
함수를 이용한 문자열 포맷팅
# 값의 위치 이용
# str.format() 함수에서 전달할 인자의 위치 인덱스는 0부터 시작함.
>>> "이름: {0}, 나이: {1} 세".format("홍길동", 20)
'이름: 홍길동, 나이: 20 세'
>>> "이름: {}, 나이: {} 세".format("홍길동", 20) # 생략할 경우 순차적으로 적용
'이름: 홍길동, 나이: 20 세'"
# 문자열 내의 {}에서 : 뒤에 문자열 표시 유형을 사용해 포맷 지정
>>> "{0:c} => {1}".format(97, 97) # 0을 유니코드 문자 a로 변환
'a => 97'
>>> "{0}, {1}, {2:x}".format('가', ord("가"), ord("가"))
'가, 44032, ac00'
>>> "{0:f} {1:.2f}".format(3.14, 3.14)
'3.140000 3.14'
# 이름 이용
# str.format() 함수에서 이름 = 값 형식으로 인자를 구성하면 이름을 이용해 인자 전달
>>> "이름: {name}, 나이: {age} 세".format(name='홍길동', age=20)
'이름: 홍길동, 나이: 20 세'
# 문자열 폭, 정렬방향 지정
>>> "{0:<10}".format("좌측정렬") # 정렬의 방향이 좌측, 문자열의 폭이 10
'좌측정렬 '
>>> "{0:>10}".format("우측정렬")
' 우측정렬'
>>> "{0:^10}".format("중앙정렬")
' 중앙정렬 '
>>> "{0:*^10}".format("중앙정렬") # 공백을 채울 문자 *
'***중앙정렬***'
# 부동소수점 숫자 폭, 소수점 이하 정밀도 표현
>>> "{0:0.2f}".format(3.141592)
'3.14'
>>> "{0:10.2f}".format(3.141592)
' 3.14'
>>> "{0:010.2f}".format(3.141592) # 앞의 남은 자리를 0으로 채움
'0000003.14'
>>> "{{ {0:.1f} }}".format(98.5) # 대괄호를 그대로 포함
'{ 98.5 }'
4. 주석 처리
주석
프로그램의 코드 앞에 #을 붙여 작성된 부분으로, 소스 코드에 대한 상세 설명을 달거나 특정 코드를 실행하지 않을 목적으로 사용함.
인터프리터의 문법 검사에서 무시되고 실행되지 않음.